2017-12-29 36 views
-1

ここではコードです。鳥を含むように書き直された "webgl_terrain_dynamic"の例です。3つのJSアニメの書き換えまたは修正。 MorphAnimMesh.jsが含まれていても新しいバージョンでは再生されません

これは鳥なしで、新しい例です。https://threejs.org/examples/webgl_terrain_dynamic.html

は、これは鳥で動作する古い例である - とthree.jsの古いバージョン:これは私がしたコードであるhttp://alteredqualia.com/three/examples/webgl_terrain_dynamic.html

製。それはすべて動作しますが、鳥は動きませんし、テクスチャ(特にオウム)上にも少しピクセルがあります。

function morphColorsToFaceColors(geometry) { 

    if (geometry.morphColors && geometry.morphColors.length) { 

     var colorMap = geometry.morphColors[ 0 ]; 

     for (var i = 0; i < colorMap.colors.length; i ++) { 

      geometry.faces[ i ].color = colorMap.colors[ i ]; 
     } 
    } 
} 

var loader = new THREE.JSONLoader(); 

var startX = -3000; 

loader.load("models/animated/parrot.js", function(geometry) { 

    morphColorsToFaceColors(geometry); 
    addMorph(geometry, 250, 500, startX -500, 500, 700); 
    addMorph(geometry, 250, 500, startX - Math.random() * 500, 500, -200); 
    addMorph(geometry, 250, 500, startX - Math.random() * 500, 500, 200); 
    addMorph(geometry, 250, 500, startX - Math.random() * 500, 500, 1000); 

}); 

loader.load("models/animated/flamingo.js", function(geometry) { 

    morphColorsToFaceColors(geometry); 
    addMorph(geometry, 500, 1000, startX - Math.random() * 500, 350, 40); 

}); 

loader.load("models/animated/stork.js", function(geometry) { 

    morphColorsToFaceColors(geometry); 
    addMorph(geometry, 350, 1000, startX - Math.random() * 500, 350, 340); 

}); 

// PRE-INIT 

// renderer.initWebGLObjects(scene); 

   // MORPHS 

function addMorph(geometry, speed, duration, x, y, z) { 

    var material = new THREE.MeshLambertMaterial({ color: 0xffaa55, morphTargets: true, vertexColors: THREE.FaceColors }); 

    var meshAnim = new THREE.MorphAnimMesh(geometry, material); 

    meshAnim.speed = speed; 
    meshAnim.duration = duration; 
    meshAnim.time = 600 * Math.random(); 

    meshAnim.position.set(x, y, z); 
    meshAnim.rotation.y = Math.PI/2; 

    meshAnim.castShadow = true; 
    meshAnim.receiveShadow = false; 

    scene.add(meshAnim); 

    morphs.push(meshAnim); 

    //renderer.initWebGLObjects(scene); 
} 

...関数の中で(レンダリング)私もこれを追加しました:https://github.com/mrdoob/three.js/pull/8488

for (var i = 0; i < morphs.length; i ++) { 

    morph = morphs[ i ]; 

    morph.updateAnimation(1000 * delta); 

    morph.position.x += morph.speed * delta; 

    if (morph.position.x > 2000) { 

     morph.position.x = -1500 - Math.random() * 500; 
    } 

I ALSは本当に私を助けていないこの記事を見つけました

VR映画を輸出して、里親の子供たちが感情を学ぶのを助けるためには、このコードが必要です(解決方法はより複雑ですが、鳥は本当に素晴らしいです、私たちは知っている - 経験から - 彼らはそれらを愛するでしょう)。

私はThree.jsの専門家ではありません。あなたの助けと丁重な答えをありがとう。 :)あなたたちは本当に助けてくれました。私は今までコードを作るために多くを探しました。 :)

答えて

0

:)私はそれをこのように解決:

MorphAnimMesh.jsで私はこのような変数クリップ定義:[0] VARクリップ= this.geometry.animationsと、

の代わりにvar clip = THREE.AnimationClip.findByName(this、label);

となり、その後mesh.playAnimation(0.0003)と呼ばれます。私はモーフを追加する関数で。

私はそれが誰かを助けてくれることを願っています。 :)

関連する問題