#javascript #three.js
#javascript #three.js
Вопрос:
При переходе с r66 на r67 я получаю сообщение:
УСТАРЕВШИЙ: GeometryUtils .merge() был перемещен в Geometry. Вместо этого используйте geometry.merge( geometry2, matrix, materialIndexOffset ).
Похоже, это не прямое преобразование, поскольку старый код выглядит так:
ТРИ.GeometryUtils.merge(cgeo, cloudgeometry);
Я попробовал следующее:
cgeo.merge(cloudgeometry.geometry,cgeo.matrixWorld);
Редактировать, также попробовал следующее, которое дает тот же результат, что и выше:
cgeo.merge(cloudgeometry.geometry);
Результатом является сетка, которая сжимается по площади, как будто она полностью игнорирует расположение подсеток, которые добавляются в новую созданную мной сетку, поэтому вместо большого красивого облака я получаю маленький белый блог.
Для этого последнего изменения нет документации, поэтому я пытаюсь понять, как это работает вслепую, если бы это была простая миграция 1 на 1, это было бы неплохо, поскольку это сработало бы, но, похоже, способ его работы полностью изменился.
Ответ №1:
Убедитесь, что матрица была обновлена перед слиянием. Код, вероятно, должен выглядеть примерно так:
cloudgeometry.updateMatrix();
cgeo.merge( cloudgeometry.geometry, cloudgeometry.matrix );
Комментарии:
1. Я попробую это здесь в ближайшее время и вернусь к вам, но, как я и подозревал, в изменении было нечто большее, чем старая строка, это не изменение 1 к 1 в других словах, спасибо за предложение!
2. Блестяще, это сделало это и, по-видимому! По-видимому, у меня был совершенно неправильный второй аргумент, поскольку у меня был cgeo, а не cloudgeometry, а также matrixWorld, а не просто matrix, но в тот день это был 14-часовой рабочий день, так что неудивительно.. Приветствия!
3. Да, это больше не волшебный oneliner, но я думаю, что текущий подход намного более мощный и чистый.
4. Особенно учитывая, что, по-моему, я читал, что это была улучшенная производительность. Я называю это решаемым, спасибо!