2015-05-04 3 views
0

Я разбираю и загружаю файл 3D-объекта (аналогично работе ColladaLoader). Это содержит несколько объектов, и многие из отдельных объектов имеют несколько материалов на разных гранях. Итак, я использую MeshFaceMaterial. На данный момент проблем нет.Можно ли использовать один MeshFaceMaterial через несколько объектов в Three.JS?

Однако несколько объектов повторно используют материалы по ним. Было бы целесообразно создать единый MeshFaceMaterial и использовать его во всех объектах? В файле содержится около 120 объектов. Меня беспокоит, что если я поделюсь по этому маршруту, это может ухудшить производительность (например, чрезмерные призывы к обращению или, возможно, выделение памяти для каждого материала на объект?), Так как большинство объектов используют свои собственные уникальные материалы. Или, это неоправданное беспокойство, и рендеринг является пригодным для пожилых, чтобы это не было проблемой? В онлайн-документации упоминается общая геометрия, а не целые общие объекты Three.Mesh.

+0

Пока атрибут цвета одинаковый для всех из них, вы должны быть в порядке. – gaitat

+0

Ваш вопрос слишком общий для ответа. Введите 'renderer.info' в консоль и выполните некоторые эксперименты - или будьте более конкретными. Я бы избегал «MeshFaceMaterial» и создавал модели, каждый из которых имеет один материал. Свойство цвета не имеет значения. Уменьшите призывы к обращению, если это возможно. – WestLangley

ответ

0

Используя renderer.info, как было предложено, я смог взглянуть на призывы к розыгрышу, и я рад сообщить, что они были одинаковыми независимо от того, использовался ли один общий MeshFaceMaterial или отдельный объект для каждого объекта. Это не значит, что могут быть другие штрафы за производительность, и в явных отдельных объектах кажется логичным, чтобы вещи оставались раздельными, но для этого случая использования, где есть кроссовер, это не проблема.

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