Мне нужно использовать свою собственную гемметрию, поскольку куб по умолчанию не похож на режим каркаса (теперь он сделан из треугольников вместо квадратов).Триггер пользовательской геометрии raycaster ловит неправильный объект
Итак, я сделал свою собственную геометрию, и она выглядит нормально, но raycaster не работает так хорошо с моими собственными объектами, как со встроенными кубами.
var cube = new THREE.Line(getCube(5,5, 5), new THREE.LineDashedMaterial({ color: 0x000000,dashSize: 1, gapSize: 0.1, linewidth: 2 }),THREE.LinePieces);
где getCube() возвращает
var geometry = new THREE.Geometry()
Смотрите пример: http://jsfiddle.net/QHjSM/12/
6 цвет заполненную форму на вершине находятся defalt THREE.CubeGeometry коробки, и выбирая их с raycaster работает отлично , 6 wireframe - моя обычная геометрия.
Вопросы: Если вы попытаетесь щелкнуть за пределами поля, но довольно близко к нему, он поймает коробку, и если вы щелкнете внутри коробки (посередине), она не поймает ее ни на одну.
Но самая неприятная вещь заключается в том, что если вы нажмете внутри одной коробки, но рядом с другой, она иногда попадает не в другую.
Я не уверен, что это можно сделать лучше, попробовал все методы geometry.compute ... но все равно никакого эффекта.
Более обходной путь вместо решения реальной проблемы, но это работает, так если я не найду какое-то прямое решение, я буду использовать твое. Спасибо –
Действительно это обходное решение. Я сам был удивлен самим CanvasRenderer. Я предположил, что вы использовали «wireframe: true» в материале, но, к моему удивлению, это было не так. –
А я нашел его, вот поток миграции от r59 до r60, где были удалены квадратики. Вы увидите, что предлагаемое решение - это тот, на который мы наткнулись: https://github.com/mrdoob/three.js/issues/3788 –