Papervision3D、PointLight3DとShadedMaterialの使い方
一度画面をクリックされた方がよろしいかと思われます。
ココ最近、どうもFlashの話題でブログを埋めてますが、ワタクシ、最近Autodesk Mayaを勉強し始めました。今までの3DCGでは、Lightwave 3D,Shade,Vueなど、割とソフトの価格も安い方のソフトを使い続けていました。やはり3Dは面白いです!最近のPS3のゲームのクオリティを見ると、確かにゲーム性が悪い訳ではないんだけど、その洗練された3DCGグラフィックだけで、何度もプレイして一人で感動してます。
「自分には一生こんなの作れないんだろうな〜」と思いながらも、ついに、ハイエンドなAutodesk Mayaを勉強し始めてしまうことにしました、頑張るぞ。
さて、3Dネタで申し訳ないんだけど、このままFlashで表現しやすいライブラリと言えば一番ポピュラーなPapervision3Dですが、最近面白くてこちらもハマってます、本業がプログラマじゃないから、ホント、FLASHerなんて呼ばれている人にはちょっと恥ずかしい限りではありますが、本日勉強して学んだ事を綴ります。
なぜ、ブログに書くかと言うと、まず自分のためなんですね。
一番自分が見やすい場所に書き留めておくって、ブログがいいんですね。
さて、今回登場してくださるオブジェクトの一部をご紹介いたします。

前から気になっていた、ライティングという事がPapervision3D 2.0 GreatWhiteでは可能になりました。本当に進化していくライブラリですね。
さらに、僕もたまに作る、「バンプマップ」にもチャレンジしました、ここで、3DCGに触れた事の無い方、バンプマップですが、複雑なポリゴンで表面を作るんじゃなくて、白と黒だけの画像をJPGなどで保存して、表面の凹凸をこのバンプマップで表現出来ます、特に光が当たった時には非常に効果的な質感を醸し出してくれます。今回作ったのは以下の2枚、表面の材質のカラーマップと、そしてバンプマップ。
これをそれぞれFlashに埋め込んで使います。

↑表面材質になるカラーマップ

↑凹凸を表現してくれるバンプマップ
さらに、僕もたまに作る、「バンプマップ」にもチャレンジしました、ここで、3DCGに触れた事の無い方、バンプマップですが、複雑なポリゴンで表面を作るんじゃなくて、白と黒だけの画像をJPGなどで保存して、表面の凹凸をこのバンプマップで表現出来ます、特に光が当たった時には非常に効果的な質感を醸し出してくれます。今回作ったのは以下の2枚、表面の材質のカラーマップと、そしてバンプマップ。
これをそれぞれFlashに埋め込んで使います。

↑表面材質になるカラーマップ

↑凹凸を表現してくれるバンプマップ
さて、画像が準備出来たところで、コーディングに入るのですが、今回は以下のオブジェクトを作りました。
・・・といった具合です。 なぜViewport3Dが2個も要るかというと、一つは通常のレンダリング要素なんですが、もう一つは画面下に映りこんでいる鏡面の画像をこれで表示してしまおう、という事なんです、簡単に言うと、毎フレームレンダリングされた画像が、下に敷いてあるPlaneオブジェクトのマテリアル(テクスチャのようなもの)にする事が可能なんですね。
というわけで、この方法を使うと、水たまりなどの映り込みも表現出来そうですね。
なお、下から撮るカメラはFreeCamera3Dクラスにしました、名のごとく、か、分からないけど、結構使い勝手が良いように感じます。 さて、コンストラクタに入ってからも新しいオブジェクトは作られますが、主に、先ほど画像を紹介したテクスチャが貼り込まれます。
それぞれ2枚の画像は埋め込んでおく方が楽なので、ライブラリに登録、リンケージ化して、クラス名を付けてバンプマップを「BmapClass」表面材質を「BallMapClass」としてBitmapクラスの子分として登録、スクリプトでそれぞれのオブジェクトに関連付けるというわけですが、特に注意したいのがこちら、PhongShaderクラス。
スペキュラマップとはバンプマップと似てるけど、鏡面の材質の効果を表現するようなものですが、あまり効果は感じられませんでした、調べときます。 こういった場合、環境光をなるべく暗くするのが効果的ですね、光は闇でよく映えるわけです。
今までviewPortは1つだけ、なんて思っていましたが、そうじゃ無かったんですね、鏡のためのビューポート、そして全景のビューポートといった感じでしょうか。
