2009-05-16 20 views
1

究極的には、papervision3d(Flashの普及した3Dレンダリングパッケージ)は、変換されたテクスチャをスクリーンに描画しますか?papervision3dはどのようにテクスチャを変換しますか?

内部でFlashのレンダリング装置を使用していますか?たとえば、DisplayObjectにテクスチャを描画して変形したり、3D MovieClipsを使用したりしていますか?または、おそらくフィルタ?または、最終的には、任意のソフトウェアプラットフォームのように、テクスチャからピクセルを読み取り、出力にペイントするだけですか?

私は簡単な答えが後者であるため質問しますが、少しのテストの後にはgetPixelsetPixelがこのようなアプローチには十分速くないようですので、もっと難解なものがあるようですに。

ありがとうございました!

編集 - 私の回答の要約:Papervisionはそれ自体で透視変換を行いません。それは、テクスチャの各三角形の変形と歪みだけを行い、十分な三角形を使用すると、視点の錯覚が発生します。アフィン変換では、Flashのレンダリング装置を使用するため、コストのかかるピクセル操作を回避できます。

答えて

5

すべて描画APIを使用してレンダリングされます。 (lineTo)描画APIを使用すると、テクスチャを描くことができるカラーよりもbitmapFill ratehrを設定できます。内部的には、渡すすべてのアセットをテクスチャとしてBitmapDataオブジェクトに変換して、レンダリング時に使用します。その後、3Dオブジェクトが持つ永続的な細分化(三角形)のために、適切な視点を得るために、3Dオブジェクトが変換されます。

この手法は、依然として非常にプロセッサを消費しますが、各ピクセルを高速に設定します。これは、他の3Dレンダリングソフトウェアと非常によく似ています。これは、ActionScript用に特別に構築されたsmaeテクニックと理論を使用しています。

+0

返信いただきありがとうございます!しかし、あなたは私が "変換を実行する"ステップで混乱しています。ピクセル単位で変換する場合、変換されたBitmapDataのすべてのピクセルを取得して設定する必要はありませんか? DisplacementMapFilterを使用することもできますが、マップ内の各ピクセルを設定する必要があります。 変換がFlashのレンダリング装置で行われている(つまり、MCにペイントして変換し、ビットマップに戻す)ということですか?それは可能ですが、あなたがアフィン変換に限定されているように見えるので、視点はありません。 – fenomas

+0

bitmapFillを設定すると、描画するときに使用する行列を定義することもできます。この行列は、描画するときにビットマップを変換します。 (例えば、画像を歪める)これは摩耗三角形が遊びに来ることです。矩形は2つ(またはそれ以上)の三角形に分割され、次に描画するときに、適切なパースペクティブを得るために、各三角形についてビットマップが異なるように歪められます。より細分するほど、精度は向上する。 –

+0

AH!私は今それを取得します。それはまったく視点変換を行っていません。アフィン・スキューを行います。より細分化された視点の錯覚が生じます。それを持って、非常にありがとう! – fenomas

関連する問題