2017-02-04 19 views
0

Как рассчитать все вершины сцены, которая держит в three.jsКак вычислить все вершины сцены, которые держат в three.js

Существует ли способ, что я могу получить общую вершину, я есть в моей сцене, как MAYA или 3DS MAX ??.

У меня есть некоторые 3d модели, загруженные загрузчиком obj, и я хочу знать, как получить общую вершину или ребра или треугольники, которые у меня есть внутри моей сцены.

Как scene.get(vertices); или scene.get(edges);

+0

Есть нет края в three.js Структуры AFAIK – pailhead

ответ

1

rstats делает это для вас.
Источник может быть просмотрен here.

Или вы можете посмотреть в массиве scene.children, ищем инстанс THREE.Mesh, который имеет массив geometry.vertices.
В качестве примера ввод scene.children[0].geometry.vertices в консоли на странице this даст вам массив вершин куба.

EDIT ...
Или еще лучше, так как WestLangley указывает, проверьте renderer.info объект

5

renderer.info является объектом Three.js, который подсчитывает количество вызовов отрисовки и оказываемых примитивов. Он также показывает количество используемых геометрий, текстур и шейдеров.

console.log(renderer.info); 

Three.js R.84

+0

Thnx WestLangley – George

0

Существует не очень простой ответ на этот вопрос.

Кромки отсутствуют в геометрии three.js, и есть несколько различных способов их представления.

Вершины могут принадлежать супам треугольника или индексированным сеткам, что означает разные числа для того же числа треугольников.

Треугольники, с другой стороны, совершенно разные, если они созданы для существования с Geometry vs BufferGeometry. Geometry имеет класс Face3, который довольно сложный, BufferGeometry имеет типизированный массив, где три числа могут представлять треугольник.

Если вы хотите отладить приложение и посмотреть, случайно ли вы создаете больше геометрий, чем необходимо (клоны по ошибке или что-то еще), используйте renderer.info в соответствии с предложением WestLangley.

Если вы хотите принять кого-то семантику elses, используйте что-то вроде инструмента rstats в другом ответе.

Если вам нужно что-то конкретное для ваших нужд, то вы можете задать такие вопросы, как «Это размер, который имеет значение, потому что тогда я также должен считать uvs как вершины», «Он слишком велик для хранения в памяти как Geometry» , «Я заинтересован только в производительности преобразования вершин» и т. Д.

0

Вы можете получить все дети сцены с:

scene.children 

А потом цикл через него: не

for (var i = 0; i < scene.children.length; i++) { 

    scene.children[i].geometry.vertices 
}