Как сделать ExtrudeGeometry лицом к объекту с помощью функции Object3D.lookAt ()? - PullRequest
1 голос
/ 27 мая 2019

Мне нужно сделать 3D-многоугольник, обращенный к другому объекту. Есть ли хороший способ сделать это? Я думал об использовании ExtrudeGeometry, но я не знаю, как применить к нему функцию Object3D.lookat (). Буду признателен за любую помощь:)

Это код, который у меня есть на данный момент:

  var position = new THREE.Vector3(0,0,0);

  var polyhedronPts = [];
    polyhedronPts.push(new THREE.Vector2(-100, 600));
    polyhedronPts.push(new THREE.Vector2(300, 600));
    polyhedronPts.push(new THREE.Vector2(600, -100));
    polyhedronPts.push(new THREE.Vector2(200, 100));
    polyhedronPts.push(new THREE.Vector2(400, 200));

    polyhedronShape = new THREE.Shape(polyhedronPts);
    var extrudeSettings = {
      amount: 5
    }; 
    var geometry = new THREE.ExtrudeGeometry(polyhedronShape, extrudeSettings);

    geometry.lookAt(position); 

    var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
    mesh = new THREE.Mesh( geometry, material ) ;

    sceneEl.object3D.add(mesh);

geometry.lookAt (сферическое расположение); линия должна составлять грань объекта [0,0,0] но это не так. У вас есть идеи, как это исправить?

1 Ответ

1 голос
/ 27 мая 2019

.lookAt() - это функция Object3D, ссылка .

Это означает, что вам нужно использовать его на объекте сетки, а не на вашей геометрии.

Чтобы повернуть объект в направлении targetObject, вы можете использовать object.lookAt( targetObject.position ). Это обнаружит текущую позицию targetObject и соответственно повернет ее.

Я настроил интерактивный JSFiddle . Вы можете перетащить куб, и конус автоматически укажет на него.

...