HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2023
1207
Morox軸による回転7解決


Moro

リンク

2023/12/7(Thu) 16:40:08|NO.100764

前回のウィンドウ表示の件ご教授ありがとうございました。
返信にてスレを上げるのなんなのでここでそのお礼を。

今回は、オブジェクトの回転です。
モデルx軸回転(縦回転)を、モデルのy軸による横回転を行った時でも
同じ縦回転のままにするためにはどのような処理をすればいいのでしょうか。

車の車輪に例えて、車を横回転させても車輪は常に前方に進行する縦回転のイメージです。
よろしくお願いいたします。



この記事に返信する


Moro

リンク

2023/12/8(Fri) 10:32:49|NO.100773

自己解決しました



Moro

リンク

2023/12/8(Fri) 12:07:27|NO.100774

やっぱり解決になってませんでした。
ただ、addboxで生成されたオブジェクトとモデリングソフト(メタセコイア)で作られた立方体とでは
最初の質問の通り、オブジェクトの回転後、x軸で回転してみると回転が明らかに異なっていました。
モデリングソフトではxyzの座標が立方体の中心に位置しています。



Makoto

リンク

2023/12/9(Sat) 14:44:07|NO.100785

前回の質問と同じくHGIMG3の事でよろしいでしょうか。

addbox のモデルと X モデルでは回転順序の初期値が違います。
必要に応じて modelorder で順序を変える必要があります。
以下のサンプルの modelorder のモードを変えてみるとわかると思います。

以下を "BOX.x" として保存してください。

xof 0303txt 0032 Header{ 1; 0; 1; } Mesh { 20; 5.00000;5.00000;-5.00000;, -5.00000;5.00000;-5.00000;, -5.00000;-5.00000;-5.00000;, 5.00000;-5.00000;-5.00000;, -5.00000;5.00000;-5.00000;, -5.00000;5.00000;5.00000;, -5.00000;-5.00000;5.00000;, -5.00000;-5.00000;-5.00000;, -5.00000;5.00000;5.00000;, 5.00000;5.00000;5.00000;, 5.00000;-5.00000;5.00000;, -5.00000;-5.00000;5.00000;, 5.00000;5.00000;5.00000;, 5.00000;5.00000;-5.00000;, 5.00000;-5.00000;-5.00000;, 5.00000;-5.00000;5.00000;, -5.00000;5.00000;-5.00000;, 5.00000;5.00000;-5.00000;, 5.00000;-5.00000;-5.00000;, -5.00000;-5.00000;-5.00000;; 6; 4;3,2,1,0;, 4;7,6,5,4;, 4;11,10,9,8;, 4;15,14,13,12;, 4;17,16,5,12;, 4;15,6,19,18;; MeshMaterialList { 1; 6; 0, 0, 0, 0, 0, 0;; Material { 1.000000;1.000000;1.000000;1.000000;; 5.000000; 0.000000;0.000000;0.000000;; 0.000000;0.000000;0.000000;; } } MeshNormals { 6; 0.000000;0.000000;-1.000000;, -1.000000;0.000000;0.000000;, 0.000000;0.000000;1.000000;, 1.000000;0.000000;0.000000;, 0.000000;1.000000;0.000000;, 0.000000;-1.000000;0.000000;; 6; 4;0,0,0,0;, 4;1,1,1,1;, 4;2,2,2,2;, 4;3,3,3,3;, 4;4,4,4,4;, 4;5,5,5,5;; } }
"BOX.x" ここまで。

次に以下のプログラムを "BOX.x" と同じ場所に保存してから実行してください。

#include "hgimg3.as" hgini setcolor 255 , 255 , 255 // box モデル(左) addbox MDL_BOX1 , 10 , 10 , 10 regobj OBJ_BOX1 , MDL_BOX1 setpos OBJ_BOX1 , -10 , 0 , 0 addxfile MDL_BOX2 , "BOX.x" // X モデル(右) modelorder MDL_BOX2 , 0 // 回転順序モード regobj OBJ_BOX2 , MDL_BOX2 setpos OBJ_BOX2 , 10 , 0 , 0 *MAIN addang OBJ_BOX1 , deg2rad(5) , deg2rad(1) , 0 // 回転 addang OBJ_BOX2 , deg2rad(5) , deg2rad(1) , 0 hgdraw hgsync 30 getkey ESC_KEY , 27 if ESC_KEY { end } goto *MAIN



Moro

リンク

2023/12/9(Sat) 20:58:14|NO.100787

前回?引き続きご教授Makotoさんありがとうございました。
おかげさまで無事望み通りの挙動になりました。

もっと仕様を読み込むことにします。



Moro

リンク

2023/12/10(Sun) 12:56:18|NO.100791

すみません。追加の質問をさせてください。
回転の中心(タイヤ、車輪でいうところの中心)を任意で変更するには
どんな命令を使えばいいのでしょうか。
モデリングソフトでオブジェクトをずらすのではなく、任意で変更したいのです。



Makoto

リンク

2023/12/10(Sun) 19:21:59|NO.100802

中心を変更するような命令はなかったと思います。

求めている答えとは少し違うかもしれませんが…
角度に合わせてずらす量を回転させて座標を調節し
オブジェクトも回転させるという方法ならあります。

#include "hgimg3.as" hgini chdir dir_exe + "/sample/hgimg3" // hgimg3のサンプルフォルダ addxfile MDL_TEST , "font_a.x" regobj OBJ_TEST , MDL_TEST CX = 0.0 // 回転中心の座標 CY = 0.0 CZ = 0.0 SX = 4.0 // 中心からずらす量 SY = -2.0 SZ = 0.0 ANG = 0.0 *MAIN ANG += 5.0 // 回転角度 fvset FV , 0 , 0 , deg2rad(ANG) // 角度に合わせて fvdir FV , SX , SY , SZ // ずらす量を回転 fvadd FV , CX , CY , CZ // 中心座標に加える setpos OBJ_TEST , FV(0) , FV(1) , FV(2) // 座標セット setang OBJ_TEST , 0 , 0 , deg2rad(ANG) // モデルも回転 hgdraw color 255 , 255 , 255 // 回転中心の表示 hgcnvaxis LX , LY , LZ , CX , CY , CZ , 0 // 画面上の座標 hgline LX - 10 , LY , LX + 10 , LY hgline LX , LY - 10 , LX , LY + 10 hgsync 30 getkey ESC_KEY , 27 if ESC_KEY { end } goto *MAIN



Moro

リンク

2023/12/11(Mon) 17:48:53|NO.100819

ありがとうございます。
命令はないのですね。残念です。

Cyのずらす値を少しでもいじってみたら、円周運動ではなくなりました。
ベクトルを理解していないと形で覚えるのも無理なんですね。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.100764への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2023(c) All rights reserved.