2013-05-30 3 views
6

Я использую Three.JS r58, и я хотел бы изменить размер объекта CubeGeometry на экране.Изменение размера THREE.CubeGeometry во время выполнения

Один из подходов, который я пробовал, при изменении размера требуется, чтобы удалить обработанные кубы и добавить новый с обновленными параметрами. Этот процесс работает, но он резко замедляет визуализацию. Я хотел бы знать, есть ли способ изменить размер CubeGeometry динамически, используя Three.js, вместо того, чтобы удалять/добавлять новый. Оценивается образец в jsfiddle.

ответ

3

Позвоните по номеру .scale.set(x, y, z) (см. this ticket).

Изначально scale установлен в (1, 1, 1) (см конструктор Object3D, родительский класс Mesh). Вы захотите увеличить эти значения на требуемый процентный масштаб в требуемых размерах.

В this fiddle Я увеличиваю куб во всех направлениях на 50 процентов, используя .scale.set(1.5, 1.5, 1.5).

+0

При масштабировании сетки, очевидно ... er .. масштабирует Mesh, проблема в том, что тогда изменяется масштаб объектов и, следовательно, система координат связанных объектов. Поэтому, если вы хотели только масштабировать геометрию объекта A, объект B, который позже добавлен в A, также искажен этой шкалой. Неужели вы не можете масштабировать геометрию? Для CubeGeometry вы можете легко создать новую геометрию, когда это необходимо. Для загруженной 3D-геометрии объекта (например, из файла .stl) это действительно не вариант. –

+0

Я затронул эту проблему здесь (https://discourse.threejs.org/t/1021/10) и собираюсь выпустить решение в своем проекте (https://github.com/trusktr/infamous/tree/threejs). На данный момент моя реализация просто воссоздает геометрию при изменении размера (без влияния на координатное пространство всех детей). В этой дискуссии я упомянул идею обработки геометрии, аналогичной Object3D, с ее собственным мировым преобразованием. Это очень быстро изменило бы размер. – trusktr

Смежные вопросы