[過去ログ]
【3Dゲームエンジン】Unity質問スレッド32 (1002レス)
【3Dゲームエンジン】Unity質問スレッド32 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
836: 名前は開発中のものです。 [sage] 2017/12/13(水) 00:01:44.95 ID:/jokcbje >>827 最初の回転状態が、 rotatiin =Quaternion.identityであれば、 1: rotation = Quaternion 2: rotation = rotation * Quaternion 3: rotation = Quaternion * rotation 1-3は全て同じ結果になります。 position = Vector3.zeroの場合、 1: position = Vector3 2: position = position + Vector3 1-2が同じ結果なのと一緒です。 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/836
837: 名前は開発中のものです。 [sage] 2017/12/13(水) 00:07:16.00 ID:/jokcbje rotationの場合も、positionの場合も、 1は、角変位や位置の絶対指定、 2-3は、角変位や位置の相対指定です。 rotatiin =Quaternion.identityでない場合、 position = Vector3.zeroでない場合、 1と、2-3で、結果が変わってきます。 しかも、rotationの場合、 2: rotation * Quaternionと 3: Quaternion * rotationでも、結果が変わってきます。 追加するQuaternionによる角変位の回転軸を、 transform軸を基準にした回転にする場合は2になり、 キャンバスのVector3軸を基準にした回転にする場合は3になります。 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/837
838: 名前は開発中のものです。 [sage] 2017/12/13(水) 00:35:37.82 ID:/jokcbje >>825-827 Invokeが呼び出しの際に1フレーム遅れるとわかっているのであれば、 1フレーム前の時間で呼び出させば大丈夫ですよ。 void Start () { rb.angularVelocity = new Vector3(45, 30, 0) * Mathf.Deg2Rad; Invoke ("Stop", 1 - Time.fixedDeltaTime); ←1フレーム前に呼び出し } void Stop () { Debug.Log ("1秒後のrotation:" + rb.rotation.eulerAngles); rb.angularVelocity = Vector3.zero; } 「1秒後のrotation:Vector3(42.4, 37.4, 15.0)」が出ましたよ。 >>809の方法で求めた場合と一致する値です。 rb.angularVelocity = new Vector3(45, 30, 0) * Mathf.Deg2Rad angle = (rb.angularVelocity).magnitude * Mathf.Rad2Deg V = new Vector3(45, 30, 0) angle = V.magnitudeでも同じ結果になります。 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/838
846: 名前は開発中のものです。 [sage] 2017/12/13(水) 20:48:15.04 ID:/jokcbje >>843 transform.lossyscale = Vector3.Scale(transform.parent.localscale, transform.localscale) つまり transform.lossyscale.x = transform.parent.localscale.x * transform.localscale.x transform.lossyscale.y = transform.parent.localscale.y * transform.localscale.y transform.lossyscale.z = transform.parent.localscale.z * transform.localscale.z localscaleは、インスペクター上で設定するスケールで、 lossyScaleは、自分のlocalscaleと親のlocalscaleの各成分の積になってます。 本当のscaleは、回転が入ると、Vector3ではなくて、3×3行列になってしまいます。 lossyScaleの場合は、回転前のスケールで、Vector3で表せるからだと思います。 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/846
848: 名前は開発中のものです。 [sage] 2017/12/13(水) 22:56:29.30 ID:/jokcbje Unityでは、アフィン変換を行う4×4行列であるMatrix4x4が、 TRS(Vector3 position, Quaternion rotation, Vector3 lossy scale) によって構成されていて、 スケーリング→回転→移動の順に適用するようにしています。 最初にスケーリングを行うことで、 3×3行列の対角成分しか使わず、Vector3で済みます。 RigidbodyのinertiaTensorも一緒で、 本来は3×3行列が必要な慣性モーメントテンソルを、 慣性主軸系に限定することで、対角成分しか使わず、 Vector3の主慣性モーメントで済むようにしています。 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/848
849: 名前は開発中のものです。 [sage] 2017/12/13(水) 23:01:57.61 ID:/jokcbje >>847 Unity自体はそれほど詳しくないですが、 物理演算系とか、3D数学が専門なので。 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/849
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.195s*