2017-03-24 12 views
0

オブジェクトの点滅をシミュレートしようとしているため、マテリアルカラーをアニメートしています。私はその後、colladaの輸出者を経由してブレンダーモデルをthree.jsにエクスポートします。ブレンダーからコラージュをエクスポートしたときにthree.jsでアニメーションの色が機能しない

問題を示すために、色を赤から緑、赤に戻す単一の立方体のモデルを作成しました。私はまたキューブを少し動かす。枠12で enter image description here

が、私はそれが緑にし、少しそれを置き換える:

は、フレーム0で、私はノー変位とキューブ赤を作る enter image description here

私はブレンダー内でアニメーションを再生、私は色の変化とキューブの変位を参照してください。しかし、colladaを使ってthree.jsにエクスポートすると、キューブは移動しますが、1つの色(キューブの色はエクスポートした時点でアクティブになっています。たとえば、赤または緑のいずれかですが、常に色)。私はこの問題を示すcreated a plunkerを持っています。私のコラージュコードはthree.js collada pumpの例に基づいています。

factory.loadColladaModel = function() { 
    console.log(`now in loadColladaModel`); 
    var loader = new THREE.ColladaLoader(); 
    loader.options.convertUpAxis = true; 

    var promise = new Promise((resolve, reject) => { 
     loader.load('color_animation.dae', (collada) => { 
     console.log(`now in collada load closure`); 

     let model = collada.scene; 
     factory.scene.add(model); 
     factory.animations = collada.animations; 
     model.scale.x = model.scale.y = model.scale.z = 5.0; 

     for (var i = 0; i < factory.animations.length; ++i) { 
      var animation = factory.animations[ i ]; 

      var kfAnimation = new THREE.KeyFrameAnimation(animation); 
      kfAnimation.timeScale = 1; 
      factory.kfAnimations.push(kfAnimation); 
     } 

     resolve('loaded'); 
     }) 
    }) 

    return promise; 
    } 

私は材料(色)をアニメーション化するthree.jsを得るためにしなければならない何をしますかモーションを変更するだけでなく、:ここではモデルをロードするために使用されるコードはありますか?私はcolladaファイルの 'animation'タグの下にカラーエントリがあるので、colladaがサポートしていると仮定します。私はこれを見ましたprior question誰かが材料を動作させるためにmorphTargetsを設定しなければならなかったところです。このようなこともする必要がありますか?モーフィングターゲットはモーションのためだけですか、それともカラーですか?

three.js R84 2.78b

多くの感謝をブレンダー。

答えて

0

基本的に、three.js ColladaLoaderはマテリアルアニメーションをサポートしていないだけです(ポジションアニメーションと回転アニメーションのみサポートしています)。私はcolladaローダーによって返された生データ構造を調べることでこれを決めました。どのようにオブジェクト0(位置アニメーションに対応する)は、sids(文字列ids)とキーなどです。オブジェクト1は素材アニメーションに対応し、sidsまたはキーはありません。マテリアルアニメーションデータはraw colladaファイルに含まれていますが、ColladaLoaderパーサーは単純にそれを読み取っていないため、カラーアニメーションはありません。

js console

どうやらのCOLLADAローダは、(2016分の5のように)mrdoob当たり"kind of deprecated"あります。 ColladaLoader2があります。ColladaLoader2は、ColladaLoaderの次のバージョンとされていますが、試しましたが、アニメーションをサポートしていないようです。私はcollada loaderを読んできましたが、実際にはそれはエージングフォーマットであり、基本的には将来の成長が進むまでは行き止まりだと思われます(

残念ながら、私はobj、json、stlを試しましたローダーとcolladaローダーがはるかに優れています。私は現在gltf形式を調査しています。これは、基本的に次の世代のcollada(例えば、Khronosグループの新しく改良されたバージョン)のようです。私はthis discussion非常に便利だと分かった。基本的には、数年前、彼自身のColladaLoaderを書いた3人のユーザーがいましたが、その後彼はColladaを放棄してglTFを後戻りさせました。

更新:私は、GLTFLoaderGLTF2Loaderローダーを試みたが、残念ながらそれらは半複雑なシーン(20個のオブジェクトと310面を有するシーン)に失敗しています。それは有望なフォーマットのように見える。私はちょうどテストの輸出業者とテストローダーの間に、それはちょうど現時点ではかなり安定していないと思う。シンプルなキューブでテストしたときに、アニメーションをフォーマット(素材アニメーションではなく)で取得できるようになりました。

私は今のところColladaにとどまり、javascriptで素材アニメーションをやらなければならないようです。

関連する問題