読者です 読者をやめる 読者になる 読者になる

人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習・Deep Learningに関する記事が多いです。



今日のUnity (3) 回転キューブ

Unity

今日のUnity (2) Rigidbodyの生成(2014/7/29)のつづき。今回はキューブを回転させてみる。移動や回転などのアニメーションはAnimationコンポーネントでGUI上からも設定できるけれど、今回はスクリプトから操作してみた。

キューブのローカル座標のX軸、Y軸、Z軸を中心としてそれぞれ30度、40度、50度回転させているだけ。操作はできない。


キューブ(Cube)

f:id:aidiary:20140802084625p:plain

キューブのテクスチャは、OpenGLの勉強をしてた(2008/8/8)とき参考にしていたNeHeのサイトのLesson8から拝借した。このテクスチャは前に拡張現実(AR)のサンプルを書いた(2009/8/29)ときにも使ったことがあった。何かかっこいい。テクスチャからMaterialを作成し、キューブに貼り付けた。キューブには以下のスクリプトを追加。

アニメーションでは、Time.deltaTimeを使うのがポイント。Time.deltaTimeを使わずに単に

    transform.Rotate(speedX, speedY, speedZ, Space.Self);

と書いてしまうとフレームあたり指定した角度だけ回転するため使っているマシンによって回転速度が異なってしまう。Time.deltaTimeは前回のUpdateの呼び出しからの経過時間を返すためこの値をかけることでどのFPSのマシンでも回転速度が一定にできる。手元のマシンでTime.deltaTimeの値を表示すると約0.016秒くらいだった。つまり、このマシンでは62FPSくらい出ていることになる。

回転は奥が深く、オイラー角やクォータニオンといった別の指定方法もあるみたい。また取り上げたい。