2

3Dモデルを表示するための小さなシーンを作成しようとしています。

GLGE Colladaの例を変更して、コードから.daeモデルを追加しました。

http://goleztrol.nl/SO/GLGE/01/

私が持って
いるもの これまでのところ、それは機能します。カメラはアニメーションを使用して回転します。

「追加」および「削除」ボタンを使用して、次のコードを使用してモデルをシーンに追加およびシーンから削除します(「アヒル」を気にしないでください。元の例ではアヒルでした)。

var duck = null;
function addDuck()
{
    if (duck) return;
    duck = new GLGE.Collada();

    doc.getElement("mainscene").addCollada(duck);

    duck.setId("duck");
    duck.setDocument("amyrose.dae");
    duck.setLocY(-15);
    duck.setRotX(1);
    duck.setScale(2);
}

function removeDuck()
{
    if (!duck) return;
    doc.getElement("mainscene").removeChild(duck);
    duck = null;
}

問題
モデルは立っているはずなのに、横になっています。要素のさまざまなメソッドが機能しているようです。場所が設定され、スケールが設定されていますが、setRotXの呼び出しは無視されているようです。APIから他のさまざまなメソッドを試しましたが、setRotY、setRot、setQuatX、およびsetDRotXはすべて失敗しているようです。エラーは発生しません(この方法についてはよくありません)。1.57(約90度)の値を試しましたが、他の値も1から180の範囲です。

何が間違っているのかわかりません。もちろん、Blenderでモデル自体を回転させることもできますが、GLGEAPIを使用して回転させたいと思います。

更新
デモモデルをロードするとseymourplane_triangulate.dae、回転が機能します。どうやら私のモデルは回転できないという点で異なります。理由がわかりません。モデルがさまざまな個別のメッシュで構築されているためかもしれないと思いましたが、スケーリングと移動が機能する理由がわかりません。

このモデルの何が問題になっているのか、そしてそれを修正するために私が何ができるのか(おそらくBlenderを使用して)誰かが知っていますか?

シーンを含むXMLファイルで初期回転を設定することは機能します。別の要素(シーン全体など)に回転を設定することもできます。

4

1 に答える 1

2

ロードした後、回転させる必要があります。

これは、へのコールバックで行うことができますsetDocument

duck.setDocument("amyrose.dae", null, function() {
    duck.setLocY(-15);
    duck.setScale(2);
    duck.setRotX(0);
    duck.setRotY(0);
    duck.setRotZ(3);
});
于 2011-10-17T22:26:36.237 に答える