Примитивный ID, не уникальный, если один и тот же me sh используется более одного раза - PullRequest
1 голос
/ 27 января 2020

Я работаю над термическим инструментом, используя OptiX. Я начал с примера "meshviewer", который использует загрузчик syoyo tinygltf . По сути, я хочу импортировать файл, получить количество примитивов и затем сложить пересечения.

Теперь я импортировал файл, содержащий два куба, которые должны состоять из 12 треугольников в каждом, то есть всего 24. Когда я запускаю свою программу, загрузчик распознает только 12 треугольников, но отображает 2 отдельных куба. Кажется, идентификаторы примитивов одинаковы для обоих кубов.

Существует ли обходной путь при экспорте из blender? Если я понял документацию напрямую, отдельные кубы рассматриваются как два "идентичных" экземпляра одного и того же me sh и, таким образом, имеют общие идентификаторы примитивов. Я использую Blender v2.81 с экспортером gltf.

Правильно ли я понимаю проблему? И есть ли легкий обходной путь? Если нет, то мне придется изменить загрузчик tinygltf.

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 27 января 2020

Возможно, два кубика разделяют меня sh. На снимке экрана ниже показаны два «объекта» Blender, Left-Cube и Right-Cube. Оба объекта используют один и тот же Blender me sh, который называется Shared-Cube-Mesh.

. Экспортер glTF распознает этот шаблон и отображает его в файле glTF. Будет два узла glTF, соответствующих двум объектам Blender, которые используют me sh. Но будет только один glTF me sh с одним кубом.

Вы можете нажать кнопку «количество пользователей», показанную ниже с белой стрелкой, указывающей на нее, чтобы сделать второй объект использовать свой уникальный я sh. Но учтите, что в этом простом примере это удваивает количество экспортируемых мной sh данных в glTF. Полная копия me sh будет сделана как в Blender, так и в двоичной полезной нагрузке glTF.

Blender Screenshot

...