【3Dゲームエンジン】Unity質問スレッド32 at GAMEDEV【3Dゲームエンジン】Unity質問スレッド32 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト885:名前は開発中のものです。 17/12/13 20:48:15.04 /jokcbje.net >>844 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で表せるからだと思います。 886:名前は開発中のものです。 17/12/13 20:58:06.39 Kxr7McTA.net >>847 おお、中の人?w 887:名前は開発中のものです。 17/12/13 22:56:29.30 /jokcbje.net Unityでは、アフィン変換を行う4×4行列であるMatrix4x4が、 TRS(Vector3 position, Quaternion rotation, Vector3 lossy scale) によって構成されていて、 スケーリング→回転→移動の順に適用するようにしています。 最初にスケーリングを行うことで、 3×3行列の対角成分しか使わず、Vector3で済みます。 RigidbodyのinertiaTensorも一緒で、 本来は3×3行列が必要な慣性モーメントテンソルを、 慣性主軸系に限定することで、対角成分しか使わず、 Vector3の主慣性モーメントで済むようにしています。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch