常にlwjglを使用したJava/Openglのルービックキューブアプリのコンテキストで、描画を改善して(http://manuelselva.files.wordpress.com/2010/09/cube.gif)、 27個の小さな立方体のそれぞれ?最後に達成したいのは、ウィキペディアのキューブの画像と同じです:http: //fr.wikipedia.org/wiki/Fichier: Rubik%27s_cube.svg
それを行うための最も簡単な解決策は何ですか?
常にlwjglを使用したJava/Openglのルービックキューブアプリのコンテキストで、描画を改善して(http://manuelselva.files.wordpress.com/2010/09/cube.gif)、 27個の小さな立方体のそれぞれ?最後に達成したいのは、ウィキペディアのキューブの画像と同じです:http: //fr.wikipedia.org/wiki/Fichier: Rubik%27s_cube.svg
それを行うための最も簡単な解決策は何ですか?
最も簡単なのは、おそらく、周りにある多くの3Dモデリングプログラム(Maya、Blenderなど)の1つで丸みを帯びた立方体のモデルを描画し、そのモデルの27個のインスタンスをコードにロードすることです。これらのようなプログラムの使用法を学ぶことは簡単ではありません。したがって、これはほとんどのゲームなどで使用される一般的なアプローチですが、これほど単純なものでは、一種のやり過ぎかもしれません。プログラムで何かを達成するためには、別の方法で物事を行う必要があります。
明らかな代替策は、コードでモデルを生成することです。基本的な考え方はかなり単純ですが、すべてをまとめるのは簡単ではないかもしれません。まず、コーナーに使用する半径を選択します。面を生成するときは、その半径の円の四分円に収まるように、面の間に十分なスペースを残します(つまり、各面は、2つの面が交差する場所の1半径手前で終了します)。それらを円の象限に続く頂点座標/法線のセットで接続します。基本的に、等間隔の角度で数十点(またはそれ以上)を生成する小さなループを記述します。各ポイントの角度は法線になり、正弦/余弦が座標を示します。(エッジではなく)コーナーで、球上にポイントを生成する必要があります。各コーナーに球の1つの象限があります。
また、基本的な立方体を使用して、反復ごとに使用される頂点の数を2倍にする細分割アルゴリズムを実装することもできます。次に、立方体の中心から各頂点へのベクトルを作成します。頂点を正規化すると、球が得られます(間:これは最も単純な球生成アルゴリズムの1つです)。ただし、角のベクトルの長さだけを変更すると、丸みを帯びた立方体になります。
いくつかの巧妙なテクスチャリングと適切に作成された法線マップは、ほとんどの場合、モデルを編集せずに丸みを帯びているように見せかけます。最終的なレンダリングは、個々の辺が丸みを帯びているかのようにシェーディングされます。
残念ながら、このアプローチでは、真正面から見たときに幻想が崩壊します。