以前作ったこれは、とにかく3Dの表示にチャレンジということで拡張性がありませんでした。
ということで、今回は、物体を単位として色々設定できるオブジェクト、UV座標は0~1、
当たり判定、画像レンダリングを別スレッドへ、の4つを意識して再び作成。
モーションは、まだまだ敷居が高いので諦めます。(((っ・ω・)っ
「UV座標は0~1」というのは、以前は素の値(0-256とかそのままの大きさ)を用いていたので。

とりあえずメタセコイヤで作った3Dデータのロードは完成。

あと、ライトの計算を、見直しました。
今まで、レンダリングの際に、頂点は色情報のみ送って、後は補完をしていたのです。
つまり、頂点の色情報に、拡散反射・鏡面反射を加味した色に設定しておいたのです。
ですが、この方法をとった場合、テクスチャを描写しようとすると問題が発生するのです。
というわけで、色情報3種類以外に、拡散反射3種類、鏡面反射1種類を頂点の情報に持たせて、描写。
という感じに。

とりあえず、メタセコイアで立方体(

頂点数98、三角ポリゴン数192)を作って。

(無駄な頂点は、ライトの計算を増やすため。)

表示させたのがこんな感じ。↓ ライトは「環境光 + 平行光源 + 点ライトx2」の4つ。

テクスチャON。


テクスチャの線形補完は、以前作ったのがあったのですが、速度の関係で切ることに。

半透明とアルファチャンネル付きテクスチャも対応してみたのですが……つなぎ目が見えてしまう。

3Dのベースエンジンの目標として、あとビルボードとポイントスプライト(パーティクル)に対応させたい。

テクスチャのミップマップ、パースペクティブ補正は、対応しない予定。
パースペクティブ補正は上の方から眺める感じなら気にならないし。うん。
(バイリニアフィルタも、テクスチャを大きくすれば気にならない。)
ミップマップは、ほしいけどうん。まあ、最後の最後です。

関連記事

  • Javaで3Dゲーム開発日記 part4 パーリンノイズJavaで3Dゲーム開発日記 part4 パーリンノイズ 3Dと言ったらやっぱりテクスチャ。 パーリンノイズを作ってみた。 ノイズの間は線形補完しています。 本当はバイキュービックとか、しっかりした補完がいいと思うのですが、技術力不足で無理でした。(>_<) こんなのが出来上がるなんて、ランダムって不思議です! 自動生成を利用すれば、小さなファイルサイズでも、高解像度テクスチャを利用できます。 […] Posted in ゲーム制作
  • Javaで3Dゲーム開発日記 part5 画像補間Javaで3Dゲーム開発日記 part5 画像補間 以前の続きでテクスチャのパーリンノイズの補間法の話です。 いい加減補間について調べようといろいろとプログラムして作ってみました。 テクスチャなので、上下と左右が繋がるように補間します。 8x8px → 256x256px […] Posted in ゲーム制作
  • 3Dネット対戦ゲーム作成日記 part63Dネット対戦ゲーム作成日記 part6 やったー 意外に簡単に裏面の処理ができちゃった! まさか2つのベクトルの外積の計算式がこんなところで役に立つなんて。 ただ1つの面を調べるのに8回もatan使ってます。 速度は大丈夫かな、描写速度よりは計算速度のほうが速いからいいけど。 だれか4点から右方向に回転か、左方向に回転か調べる方法でもっといい方法があったら教えて下さい^^ /*4点が左回 […] Posted in ゲーム制作
  • メタセコイア作品集1メタセコイア作品集1 買いましたといっても、先月買ったのですが、とても楽しいです。 値段も5400円とお得です。 無料の3Dモデリングソフトもあるのですが、 メタセコイアはユーザーインタフェースが分かりやすくてとっつきやすいです。 やっぱりインターフェースのデザインは大事です。 どんなに優れていても使いにくかったら意味がないのです。 2か月もあっというまにたちいろいろ作ったので、 作った物を紹 […] Posted in CG制作
  • Javaで3Dレンダラ作りたい人まとめJavaで3Dレンダラ作りたい人まとめ Javaでソフトウェアレンダリングを勉強したい人の調べ物まとめ。順番は関係ないです。 誰もが一度は作ってみたいと思う?3Dソフトレンダラ。是非チャレンジしてみて下さい!!  講座系 石田智史さんの「JAVAで学ぶ3D」 (gcj/JAVAde3D)(Internet […] Posted in ゲーム制作
  • 3Dネット対戦ゲーム作成日記 part303Dネット対戦ゲーム作成日記 part30 グラフと、ログインウィンドウにバージョンを表示するようにしました。 ちなみに、このグラフもmmo!が元ネタだったりします・・・! サーバーとクライアントの安定のために色々しました。 サーバーは、クライアント1人に付き、スレッドを3つ作成します。 1つは、通信の入力用スレッド、2つ目は、通信の出力用スレッド、3つめは総まとめのスレッドです。 スレッドを […] Posted in ゲーム制作