1

私は次のチュートリアルに基づいていくつかのコードを書いています:

http://active.tutsplus.com/tutorials/3d/quick-tip-displaying-a-3d-model-with-papervision3d/

例からコードをコピーし、自分のアセットへのパスを追加しました。

[Embed(source="/Models/daeModel/cow.dae", mimeType="application/octet-stream")]    
private var CowModelClass:Class;         
[Embed(source="/Models/daeModel/Cow.png")]    
private var CowTextureClass:Class;  
[Embed(source="/Models/SkyDome/images.jpg")]    
private var SkyTextureClass:Class;
[Embed(source="/Textures/grass-texture.jpg")]    
private var GrassTextureClass:Class;

上記のアセットは、スカイドーム(球)の下の草(平面)に立っているCollada牛モデルを表示するために使用されます。そのため、私のコードはチュートリアルとは少し異なり、DAEではなくColladaをロードしています。

import org.papervision3d.objects.parsers.Collada;

Flash CS3で公開しましたが、.swfは完全に機能します。牛のモデルのディスプレイ、草の飛行機、スカイドームがすべて表示されます。

残念ながら、Flash CS3は埋め込まれていないため、アセットは実行時にロードされます。

アセットを埋め込むには、次を使用してmxmlc.exeを使用して.asをコンパイルします。

-static-link-runtime-shared-libraries=true

コンパイルエラーは発生しません。

ただし、.swfを実行すると、芝生の平面とスカイドームはテクスチャが埋め込まれた状態で正常に表示されますが、Colladaモデルは表示されません。

私自身のデバッグテキストでは、モデルの幅が0と表示されているため、モデルが読み込まれていないように見えます。モデルの3D座標を移動して、モデルの座標を中心とする3Dテキストを移動できるため、Colladaクラスは引き続き正常に機能します。テキストは表示されますが、モデルは表示されません。

簡単な変更を加えるだけで、モデルのテクスチャ「Cow.png」を芝生の平面に適用して確認でき、問題なく表示されます。テクスチャはモデルと同じフォルダにあるので、モデルの場所へのパスをナビゲートすることは問題ではないことを私は知っています。

mxmlcでコンパイルした後にColladaモデルが表示されない理由を誰かが知っていますか?

コマンドラインパラメータなど、明らかなものがありませんか?

それが失敗した場合、このモデルを埋め込む他の方法はありますか?

4

1 に答える 1

0

問題が解決しました!

コンパイラmxmlcでは、cowByteArrayをXMLとして定義する必要がありました。

//load cow model MXMLC
var cowByteArray:ByteArray = new CowModelClass ( ); 
cow = new Collada ( ) ;
cow.load ( new XML(cowByteArray), cowMaterialsList ) ;

2番目のコードを使用すると、mxmlcでコンパイルした後、モデルが正常に表示されます。

これが誰かに役立つことを願っています!

于 2013-03-11T23:38:30.913 に答える