ルービックキューブをAndroidで遊ぶことを考えると、自由自在にルービックキューブを回転させたい。
しかし、回転処理は自分が思っていた以上に厄介なものだということを思い知らされた。
OpenGLでは、回転関数が用意されていてx軸、y軸、z軸それぞれを回転させて360度の回転を実現している。
意図した回転を得られない 軸を順番に回転させることをオイラー角というのだけど、このオイラー角というのはジンバルロックという欠陥だの姿勢制御が難しいとか完全なものじゃない。
回転を自由に行うために、まかさ数式だのオイラー角だのクォータニオンだの理解し ないと先に進めないとは・・・理解というかサンプル引っ張ってくるだけでしょうけど。
とりあえず、あまり回転の問題に時間を掛けてられないので、他のやること(2次元文字表示、ゲームロジック、Android自体の勉強等・・)に移りたいと思う・・
しかし、回転処理は自分が思っていた以上に厄介なものだということを思い知らされた。
OpenGLでは、回転関数が用意されていてx軸、y軸、z軸それぞれを回転させて360度の回転を実現している。
意図した回転を得られない 軸を順番に回転させることをオイラー角というのだけど、このオイラー角というのはジンバルロックという欠陥だの姿勢制御が難しいとか完全なものじゃない。
回転を自由に行うために、まかさ数式だのオイラー角だのクォータニオンだの理解し ないと先に進めないとは・・・理解というかサンプル引っ張ってくるだけでしょうけど。
とりあえず、あまり回転の問題に時間を掛けてられないので、他のやること(2次元文字表示、ゲームロジック、Android自体の勉強等・・)に移りたいと思う・・
参考書読みながらツギハギで少しずつプログラミングして、ようやく、OpenGLで物体に光を当てて表示できるようになりました。
Androidでルービックキューブを作るにしても、せっかくOpenGLを使うんだからライティング位は将来必要だろうと思っているので。
ライティングがないとのっぺりした単色で見た目にもつまらないです。
しかし、なんでもないポリゴンに光を反映させるのに二日掛かってしまいました。
参考書、ネットであちこち参考にしながら作っていたのですがなかなかうまく表示されません。
OpenGLというのは単に光源を設定しても物体に反映されないのですね
そこで、必要になるのが「法線ベクトル※」という値なんですが、これをポリゴンに設定しないと表示がおかしかったり、表示すらしないという状況に陥ってしまいます。
※OpenGLでは「Normal(ノーマル)」と呼ぶ
法線ベクトルを簡単にいうと、「面に対して垂直なベクトル」のことです。
OpenGLでは、これをいちいち計算してポリゴンを形成する各頂点毎に設定するみたいです。
この辺の理解とOpenGL特有の関数の多さで、表示までに時間が掛かってしまいました
ちなみに、OpenGLにはフォグ(霧)という機能もあります。これも、より見た目をリアルにするには必要なのかな!?まあ処理速度と見た目の効果次第では却下になるかもしれませんが。
写真は、光を当てた立方体です。静止画ではちょっとしょぼいですが、くるくる回すと面が光に反射してきらきらしていい感じです。

Androidでルービックキューブを作るにしても、せっかくOpenGLを使うんだからライティング位は将来必要だろうと思っているので。
ライティングがないとのっぺりした単色で見た目にもつまらないです。
しかし、なんでもないポリゴンに光を反映させるのに二日掛かってしまいました。
参考書、ネットであちこち参考にしながら作っていたのですがなかなかうまく表示されません。
OpenGLというのは単に光源を設定しても物体に反映されないのですね
そこで、必要になるのが「法線ベクトル※」という値なんですが、これをポリゴンに設定しないと表示がおかしかったり、表示すらしないという状況に陥ってしまいます。
※OpenGLでは「Normal(ノーマル)」と呼ぶ
法線ベクトルを簡単にいうと、「面に対して垂直なベクトル」のことです。
OpenGLでは、これをいちいち計算してポリゴンを形成する各頂点毎に設定するみたいです。
この辺の理解とOpenGL特有の関数の多さで、表示までに時間が掛かってしまいました
ちなみに、OpenGLにはフォグ(霧)という機能もあります。これも、より見た目をリアルにするには必要なのかな!?まあ処理速度と見た目の効果次第では却下になるかもしれませんが。
写真は、光を当てた立方体です。静止画ではちょっとしょぼいですが、くるくる回すと面が光に反射してきらきらしていい感じです。

以外と知られていないMacの画面共有(リモートデスクトップ)の方法。
Macにはデフォルトで画面共有ができるソフトが入っている。その名はVNC。
Unix/Linuxではおなじみのソフトで、OS XもUnix系OSなので問題なく使える。
ちなみに、VNCを使っていれば接続先のOSは何でも良い。MacからLinux/Windowsを制御するのも可能だし、その逆も可能。
今回は相手がMacという設定で解説する。
使い方はすごーく簡単。
まず、接続したいMacのシステム環境設定で画面共有を許可する。接続先の設定はこれだけ。

接続元からは、Finderからサーバに接続を選択し、

vnc:// でアクセスする。

認証を求められるので接続先のユーザ名とパスワードを入力する。

これだけで画面共有を開始できる。
Macにはデフォルトで画面共有ができるソフトが入っている。その名はVNC。
Unix/Linuxではおなじみのソフトで、OS XもUnix系OSなので問題なく使える。
ちなみに、VNCを使っていれば接続先のOSは何でも良い。MacからLinux/Windowsを制御するのも可能だし、その逆も可能。
今回は相手がMacという設定で解説する。
使い方はすごーく簡単。
まず、接続したいMacのシステム環境設定で画面共有を許可する。接続先の設定はこれだけ。

接続元からは、Finderからサーバに接続を選択し、

vnc:// でアクセスする。

認証を求められるので接続先のユーザ名とパスワードを入力する。

これだけで画面共有を開始できる。
Mac OS X には昔から沢山の隠し機能がある。
主に開発者向けの機能が多いんだけども、中にはとても便利な機能も隠されている。
このSecretsをインストールするとシステム環境設定で Mac の隠し機能の設定をすることができる。

例えば Top Secrets > File type for screen captures の設定はグラブで撮影したスクリーンショットのデフォルトファイルタイプを設定できる。私はこれをpngに設定しているので、撮影したデータを変換すること無くブログにアップすることができる。
主に開発者向けの機能が多いんだけども、中にはとても便利な機能も隠されている。
このSecretsをインストールするとシステム環境設定で Mac の隠し機能の設定をすることができる。

例えば Top Secrets > File type for screen captures の設定はグラブで撮影したスクリーンショットのデフォルトファイルタイプを設定できる。私はこれをpngに設定しているので、撮影したデータを変換すること無くブログにアップすることができる。
