Object 命名多个不同于另一个的collada对象
我们目前可以使用下面的代码加载多个collada文件,我们想知道如何以不同的方式命名collada文件 以下是我们使用的一些函数:Object 命名多个不同于另一个的collada对象,object,three.js,webgl,collada,Object,Three.js,Webgl,Collada,我们目前可以使用下面的代码加载多个collada文件,我们想知道如何以不同的方式命名collada文件 以下是我们使用的一些函数: function loadFiles(){ urls.push('./model/e1.dae'); urls.push('./model/e2.dae'); urls.push('./model/e3.dae'); urls.push('./model/e4.dae'); urls.push('./model/e5.dae'
function loadFiles(){
urls.push('./model/e1.dae');
urls.push('./model/e2.dae');
urls.push('./model/e3.dae');
urls.push('./model/e4.dae');
urls.push('./model/e5.dae');
for(var i =0; i<urls.length; i+=1) {
var loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
loader.load(urls[i], function(collada) {
var object = collada.scene;
object.updateMatrix();
object.position.x = Math.random()*500-200;
object.position.y = Math.random()*200-100;
object.scale.x = object.scale.y = object.scale.z = 2;
object.rotation.y -= (90)*(Math.PI/180);
object.rotation.x = (90)*(Math.PI/180);
object.position.z = 10;
scene.add(object);
renderer.render(scene, camera);
});
}
}
function onDocumentMouseDown( event ){
event.preventDefault();
toIntersect = [];
scene.traverse(function (child) {
if (child instanceof THREE.Mesh) {
toIntersect.push(child);
}
});
raycaster = projector.pickingRay( mouse2D.clone(), camera );
var intersects = raycaster.intersectObjects( toIntersect );
alert(intersects[0].object.name);
}
函数加载文件(){
url.push('./model/e1.dae');
url.push('./model/e2.dae');
url.push('./model/e3.dae');
url.push('./model/e4.dae');
url.push('./model/e5.dae');
对于(var i=0;i就在var object=collada.scene;
之后,您可以说object.name=url[i];
。您可能会遇到范围问题,但您已经明白了。
或者,您可以在Sketchup中进行命名,以使其正确无误。我也做过类似的工作,它非常适合我选择collada模型之一,并使用raycaster获取其名称和id。(场景中渲染了多个collada模型)
下面是对我有用的代码片段和步骤:
- 创建新的directionvector对象作为全局变量
var directionVector=new THREE.Vector3()
- 创建新的鼠标、光线投射器和投影仪对象作为全局变量
- 在加载collada模型后,创建onDocumentMouseMove事件函数并将其附加到collada模型容器(放置渲染器.doElement的DOM)中
}
您的_collada_model_container.mousemove(onDocumentMouseMove);
- 将单击事件附加到collada模型容器(放置渲染器.doElement的DOM)中
- 单击容器时,调用此函数:
函数selectColladModel(){
}
我遇到了同时加载多个Collada型号的问题。您能在这方面帮助我吗
var mouse = new THREE.Vector2();
var raycaster = new THREE.Raycaster();
var projector = new THREE.Projector();
function onDocumentMouseMove( event ) {
event.preventDefault();
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
mouse.y = -( event.clientY / window.innerHeight ) * 2 + 1;
directionVector.set(mouse.x, mouse.y, 1);
projector.unprojectVector(directionVector, camera);
directionVector.sub(camera.position);
directionVector.normalize();
raycaster.set(camera.position, directionVector);
var intersects = raycaster.intersectObjects(scene.children, true);
if (intersects.length) {
var target = intersects[0].object;
if(target){
console.log(target.name+" "+target.id);
}
}