以前作ったこれは、とにかく3Dの表示にチャレンジということで拡張性がありませんでした。
ということで、今回は、物体を単位として色々設定できるオブジェクト、UV座標は0~1、
当たり判定、画像レンダリングを別スレッドへ、の4つを意識して再び作成。
モーションは、まだまだ敷居が高いので諦めます。(((っ・ω・)っ
「UV座標は0~1」というのは、以前は素の値(0-256とかそのままの大きさ)を用いていたので。
とりあえずメタセコイヤで作った3Dデータのロードは完成。
あと、ライトの計算を、見直しました。
今まで、レンダリングの際に、頂点は色情報のみ送って、後は補完をしていたのです。
つまり、頂点の色情報に、拡散反射・鏡面反射を加味した色に設定しておいたのです。
ですが、この方法をとった場合、テクスチャを描写しようとすると問題が発生するのです。
というわけで、色情報3種類以外に、拡散反射3種類、鏡面反射1種類を頂点の情報に持たせて、描写。
という感じに。
とりあえず、メタセコイアで立方体(
頂点数98、三角ポリゴン数192)を作って。
(無駄な頂点は、ライトの計算を増やすため。)
表示させたのがこんな感じ。↓ ライトは「環境光 + 平行光源 + 点ライトx2」の4つ。
テクスチャON。
テクスチャの線形補完は、以前作ったのがあったのですが、速度の関係で切ることに。
半透明とアルファチャンネル付きテクスチャも対応してみたのですが……つなぎ目が見えてしまう。
3Dのベースエンジンの目標として、あとビルボードとポイントスプライト(パーティクル)に対応させたい。
テクスチャのミップマップ、パースペクティブ補正は、対応しない予定。
パースペクティブ補正は上の方から眺める感じなら気にならないし。うん。
(バイリニアフィルタも、テクスチャを大きくすれば気にならない。)
ミップマップは、ほしいけどうん。まあ、最後の最後です。
コメント