2016-04-11 19 views
1

Bu nesne için bir doldurma konumu gerçekleştirmek istiyorum ve bittiğinde, onu soldur ... Şu anda işim bittiğinde gizleniyordum. gerçek __webglInit : gerçek _modelViewMatrix : THREE.Matrix4 _normalMatrix : Burada Arası doldurma konumu bittikten sonra nesneyi görünmez hale getirin

this.tweenBox2.onUpdate(function() 
{ 
      that.box.position = a; 
      that.box.Show(); 
}); 
this.tweenBox2.onComplete(function() { 
      for (var i = 0; i < that.box.children.length; i++) { 
       that.box.children[i].visible = false; 
      } 
      that.box.position = new THREE.Vector3().copy(storagePos); 
}); 

iç box.children [0]

THREE.Mesh 

webglActive budur ÜÇ.Matrix3 castShado ağırlık: yanlış çocuk : Array [0] eulerOrder : (...) frustumCulled: doğru geometrisi : THREE.Geometry kimliği : malzeme : ÜÇ .MeshLambertMaterial matrisi : THREE.Matrix4 matrixAutoUpdate : MatrixWorld gerçek: THREE.Matrix4 matrixWorldNeedsUpdate : yanlış adı : "" ebeveyn : Kutu pozisyon : THREE.Vector3 kuaternion : THREE.Quaternion receiveShadow : false renderDepth : null rotasyon : THREE.Euler rotationAutoUpdate : gerçek ölçekli : THREE.Vector3 up: THREE.Vector3 useQuaternion : (...) userData : Nesne uuid : "9C6DC789-20D0-4F9F-88B6-CDA9A2C372B9" visible : true __proto : ÜÇ.Eğer true şeffaflığını ayarlamak gerekir kutunuzun için malzeme oluşturduğunuzda

var box = boxModel.scene.children[3].children[0].clone(); 
box.traverse(function (child) 
{ 
    if (child instanceof THREE.Mesh) 
    { 
     child.material = child.material.clone(); 
    } 
}); 
+0

Görüyorum ki bir materyali klonlıyorsunuz, ancak ilk oluşturduğunuzda bunu şeffaf olarak mı ayarlıyorsunuz? – leota

cevap

0

: Malzeme bu şekilde oluşturulduktan

Object3D

material = new THREE.MeshPhongMaterial({color: 0x00ff00, transparent: true}); 

Bir PhongMaterial kullanıyorum ama önemli değil. onun pozisyonu için yaptığı gibi

Sonra OnUpdate işlevini onun opaklığını değiştirebilirsiniz:

this.tweenBox2.onUpdate(function() 
{ 
      that.box.position = a; 
      //This will fade the opacity from 0 to 1 
      //NOTE: I'm considering "box" as a THREE.Mesh 
      that.box.material.opacity = 0; 

      that.box.Show(); 
}); 

Sana onComplete işlevini gerekir sanmıyorum.

Güncelleme 1: Sonra fadeOut fonksiyonu

var opacityVar = 1; 

:

function fadeOut(){ 

    if(opacityVar >= 0){ 

     mesh.material.opacity = opacityVar; 
    } 
} 

Ve içinde

Ben fonksiyonu işlemek ben donukluk değeri depolayan bir küresel değişkeni oluşturduk
opacity varlığını güncelleştirme ve sizde çağırmanız gereken fadeOut'u çağırma işlevi:

function render() { 

    camera.lookAt(scene.position); 

    renderer.render(scene, camera); 

    opacityVar -= 0.01; //Update opacity var 

    fadeOut(); //Call FadeOut 

} 
+0

tween bu şekilde çalışmaz, opaklığı doğrudan 0 olarak ayarlar, ancak özellik opaklığı için teşekkür ederiz. – Carlosss

+0

Maalesef zaman içinde tweens fx yapan başka bir Tween kitaplığı kullanıyorum. Her neyse cevabı, size yardımcı olabilecek bir işlevle güncelleştiriyorum – leota

+0

Teşekkür ederim, onun opaklığını değiştirmenin hiçbir şey yapmadığını fark ettim, belki de her zaman bir başka nesnenin çocuğu olduğu için opaklık 1'dir. o zaman nasıl çalışırdı biliyor musun? – Carlosss

İlgili konular