0

こんにちは、私は達成する目標を達成しました。マウスで操作された 3D キューブで、各壁にグラデーションが塗りつぶされています。

グラデーションと 3D 回転キューブに対応するソース コードをいくつか見つけましたが、ここに問題があります。

これらの 2 つのものを組み合わせると、最初のプレーンの黒い背景の背後にあるグラデーションの背景に透明なキューブがワイヤフレームのように見えます。グラデーションは常に静止しています。

rotx .roty, rotz の3つのパラメータを入力に取得した立方体を回転・表示するメソッドを利用して、各面に表示されるグラデーションに適用したいと思います。グラデーションは独自のマトリックスを取得しましたが、このグラデーションをいつどのように操作して目的の効果を得るかについての手がかりがありません-キューブの側面にペイントされ、それに沿って3D位置に変換されるようにグラデーションを変換/回転することを意味します. 私は、各側に個別の勾配行列が必要だと思いますが、この行列を rotx、roty、i rotz に合わせて変換するにはどうすればよいでしょうか。誰でも私を助けることができますか?

ここにグラデーションのソースがあります http://snipplr.com/view.php?codeview&id=7050

キューブ fla ファイルを取得できるサイト http://www.flashandmath.com/flashcs4/cs4simple3d/index.html

そして、これが私の変更を加えた上記のリンクからの.flaファイルのコードです

http://pastebin.com/fdc431a4

4

1 に答える 1

1

これは実際には不可能です...遠近歪みはアフィン変換ではありません。そのため、正しい遠近歪みでグラデーションを作成するための適切なパラメーターとなるマトリックスがありません...

Flash 10 の最も簡単な方法は、実際には別の方法を取ることだと思います... すべての DisplayObjects は空間で変換できるため、DisplayObject で任意の面を表現し、その上ですべての変換を実行するだけです。 do は z ソートです ...


編集:あなたが探している近似はまったく不可能です...あなたに面し、黒から白、上から下への線形グラデーションを持つ立方体を想像してください...右に回し始めると、勾配はもはや平行ではなく、円錐形の勾配を形成し始め、すべてが 1 点に収束します ...

2番目の段落のアプローチはまさにあなたが探しているものです... DisplayObjectを作成し(Shapeで行う必要があります。そのためにMovieClipsは必要ありません)、それにグラデーションを描画し、 を使用して3D空間に変換しますxyzrotationXrotationYおよびrotationZ... 複数のオブジェクトを使用するとすぐに、それらを手動で z ソートする必要があります ... 3d グラデーションが必要な場合は、そのコードを削除してこのアプローチを使用する必要があります。断然最も単純です...

AS3 に関するあなたの問題は実際には言語とは何の関係もありません...アプローチを再考する必要があります...新しい言語と未知の API から始めて、背後にある理論の知識がなくても 3d エンジンを拡張しようとしています、本当に最善の方法ではありません...

最初に言語に慣れ始める必要があります...慣れたら、sandy、papervision、away3d、alternativaなどの優れたAS3 3dエンジンを使用するのが最善の方法だと思います...たとえば、砂の場合、スカイ ボックス (3D 立方体) を作成し、その面に必要なマテリアルを割り当てれば完了です ... また、これらのエンジンは 3D モデリング ソフトウェアと相互運用するため、多面体を作成するだけでなく、手でそれらをいじって、複雑なモデルをインポートして、かなりクールなことをすることができます...しかし、論理的な順序で、十分な理論的知識を持って物事を行います...

じゃあ、頑張ってね ... ;)


挨拶

back2dos

于 2009-08-23T10:55:27.553 に答える