three.js - naming a multiple collada objects differing from another -


we able load multiple collada files using code below, want know how able name collada files differently.

here of functions used:

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 =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); } 

in loadfile function, put addresses of each of collada files array , load using loop. rendering of file works. not able make alert name and/or id of object if clicked.

instead of releasing different names, of objects rendered alerts "sketchup" when clicked.

renaming using "object.name = "name"" not work either. hope answer question.

i have done similar , it's working me in selecting 1 of collada model , getting it's name , id using raycaster. (there multiple collada models rendered in scene).

here snippet of code , steps working me :

  • create new directionvector object global variable.

var directionvector = new three.vector3();

  • create new mouse, raycaster, , projector object global variables.
var mouse = new three.vector2();  var raycaster = new three.raycaster();  var projector = new three.projector(); 
  • create ondocumentmousemove event function , attach collada model container (the dom renderer.domelement placed) after collada models loaded.

    function ondocumentmousemove( event ) {           event.preventdefault();           mouse.x = ( event.clientx / window.innerwidth ) * 2 - 1;           mouse.y = -( event.clienty / window.innerheight ) * 2 + 1; 

    }

your_collada_model_container.mousemove( ondocumentmousemove );

  • attach on click event collada model container (the dom renderer.domelement placed).

  • when container clicked, call function :

    function selectcolladamodel(){

     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);               }           }  

    }


Comments

Popular posts from this blog

php - mySql Join with 4 tables -

css - Text drops down with smaller window -

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -