Ich erstelle ein Solarsystem mit drei js.In, dass ich einige der Details beim Klicken auf beliebige Objekte anzeigen möchte.Ich habe Objekt Picking-Konzepte verwendet. In dem ich versuche, die zu bekommen Objekte, die sich mit dem Klicken kreuzen. Aber ich bin nicht in der Lage, Objekte zu erhalten, die sich schneiden. Als ich versuchte, die Objekte im Schnittpunktarray zu drucken, bekomme ich als "undefined" und Länge des Schnittpunktarrays als 0.Solarsystem mit drei js Animation
function mous(event) {
var vector = new THREE.Vector3((event.clientX/window.innerWidth) * 2 - 1, -(event.clientY/window.innerHeight) * 2 + 1, 0.5);
vector = vector.unproject(camera);
raycaster = new THREE.Raycaster(camera.position, vector);
var intersects = raycaster.intersectObjects([orbitDir1,orbitDir2,orbitDir3,orbitDir4,orbitDir5]);
alert(intersects[0]);
alert(intersects.length);
} `
Und hier ist der Code für OrbitDir.
geometry = new THREE.CircleGeometry(2.3, 100);
geometry.vertices.shift();
circle = new THREE.Line(
geometry,
new THREE.LineDashedMaterial({color: 'red'})
);
circle.rotation.x = Math.PI * 0.5 ;
tex = new THREE.ImageUtils.loadTexture("Mercury.jpeg") ;
planet = new THREE.Mesh(
new THREE.SphereBufferGeometry(0.3, 32, 32),
new THREE.MeshPhongMaterial({ map : tex})
);
planet.position.set(2.3, 0, 0);
scene.add(planet);
orbit = new THREE.Group();
orbit.add(circle);
orbit.add(planet);
orbitDir = new THREE.Group();
orbitDir.add(orbit);
//orbitDir.position.x += 0.1 ;
orbitDir.position.y += 4 ;
orbitDir.position.z += 5 ;
orbitDir.rotation.x +=2.3 ;
scene.add(orbitDir);
können Sie eine Geige oder codepen zur Verfügung stellen? – prisoner849