Смотрите следующую скрипку:Three.js пересекающиеся CircleGeometry работает при использовании THREE.Line, но не при использовании THREE.Mesh
https://jsfiddle.net/1jmws2bp/
Если переместить курсор мыши на линию или круг, он должен изменить цвет для белого (работает для меня, локально, в jsfiddle иногда есть немного смещения, не совсем уверен, почему).
Проблема в том, что если вы меняете Линию 22: до var circle = new THREE.Mesh(geometry, material)
, круг заполняется (как и предполагалось), но если вы теперь наведете его сейчас, он не обновит цвет.
Почему? Если я вручную добавлю это: scene.children[0].material.color.setHex(0xff0000);
это действительно работает. Так почему-то мне кажется, что с помощью Mesh RayCaster не видит пересечения. (Проверено путем добавления этой строки alert("intersection");
после if (intersects.length > 0)
нет предупреждения, если я использую Mesh
вместо Line
)
Если вы хотите пересечь сетку круга, то удалите строку 'geometry.vertices.shift();' из функции 'newCircle()' – prisoner849
@ prisoner849 Спасибо, интересно, хотя ... Я добавил это из-за это здесь: https://stackoverflow.com/questions/13756112/draw-a-circle-not-shaded-with-three-js. Я задаюсь вопросом: с 'new THREE.Line' он работает с или без сдвига, но с Mesh это не так, когда присутствует сдвиг. Почему это? Кроме того, если вы добавите ответ, я с радостью приму это! – Sorona
Я сделал ответ. – prisoner849