У меня есть объект THREE.Line
, который используется для настройки пользовательской сетки. Теперь проблема заключается в том, что при использовании raycast до intersectObjects
, когда пользовательская мышь может пройти через эту сетку, intercept
будет успешным только в том случае, если пользовательская мышь «пойдет» по любой из линий сетки.IntersectObjects - THREE.Line - Three.js
Так в конце концов, что я пытаюсь сделать это, как может заполнить пространство между линиями с «невидимым» лицом или даже форма, так что, когда пользователи мыши идут по этой сетке, я могу вызвать действие. Вот что я делаю:
var response = this.buildGridGeometry(modelStep,modelSize,gridtype);
var geometry = response['geometry'];
geometry.computeBoundingBox();
// # Setup the material
var material = new THREE.LineBasicMaterial({ color: 0x000000, opacity: 0.2 });
// # Draw each individual line
var line = new THREE.Line(geometry, material, THREE.LinePieces);
Любые предложения?
Два предложения. Как насчет установки свойства raycasters linePrecision на большее значение. Документация определяет это свойство как _ Точный коэффициент raycaster при пересечении объектов Line ._. Возможно, он может заполнить область между линиями. Второе предложение - масштабировать и выровнять PlaneGeometry с сеткой (придать ей одну и ту же матрицу преобразования), а затем сделать ее «.visible = false;». Когда плоскость пересекается, вы знаете, что линия сетки тоже. – micnil
Micnil Мне нравится идея преобразования плоской геометрии. На ваш взгляд, какой вариант лучше? –
Я думаю, что геометрическая плоскость была бы лучше, если бы ваша сетка линий была прямоугольной, но она выглядит более «L». Это означало бы, что вам, вероятно, понадобится два самолета, что сделает его «хакерским» решением. Попытайтесь сначала установить более высокую линейную точность, посмотрите, подходит ли она для ваших нужд. Одним из последствий высокой точности линии может быть то, что сетка будет пересекаться немного за пределами краев. Сетка также пересекла бы, как если бы она имела немного высоты. Надеюсь, вы понимаете, что я имею в виду, иначе просто попробуйте. – micnil