Естественно не работает, ты же сравниваешь ссылки на обьекты, а они естественно разные.
Чтобы сравнить геометрию необходимо перебирать вершины у обоих обьектов и сравнивать их координаты.
В общем что-то вроде
m1 = copy obj_const.mesh
m2 = copy obj.mesh
if m1.numVerts != m2.numVerts then return false
for i = 1 to m2.numVerts do
(
v1 = getVert m1 i
v2 = getVert m2 i
if v1 != v2 then return false
)
return true
objArray = #()
for obj in geometry do
if (obj.name != "SceneBox") then append objArray obj
for i = 1 to objArray.count-1 do
for j = i+1 to objArray.count do
(
if ( (objArray[i] != undefined) and (objArray[j] != undefined) ) then
(
m1 = objArray[i].mesh
m2 = objArray[j].mesh
if ( m1.numVerts == m2.numVerts ) then
(
b = true
for i = 1 to m1.numVerts do
(
v1 = getVert m1 i
v2 = getVert m2 i
if ( v1 != v2 ) then b = false
)
)
if ( b == true ) then objArray[j] = undefined
)
)
Я хотел сделать просто чтобы при экспорте моделей из макса была проверка одинаковых моделей и если таковые имеются экспортировал одну из них. Все работает, но теперь я думаю что такая проверка занимает ещёё больше времени, чем экспорт тупо всех объектов =( (доказательство тому элементарная сцена с 4 чайниками и одним боксом) Вначале я вообще думал макс завис, а оказывается это была вот это проверочка. Что действительно получается лучше экспортировать всю сцену ?
Перепиши m1 = objArray.mesh на m1 = copy objArray.mesh - быстрее будет. И потом если у двух объектов разное количество вершин, то они уж точно не одинаковы, зачем еще сравнивать у них координаты вершин? - Сразу переходи к сравнению следующей пары. Тоже самое и со сравнением самих координат вершин - если уже попались две не равные вершины- зачем после этого сравнивать все остальные - тоже сразу переходи к сравнению следующей пары. В общем у тебя много ненужного делается в скрипте - убери весь мусор будет летать даже с миллионом объектов.
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
ENGine
objArray = #()
for obj in geometry do
if ( obj == obj_const ) then print "Равны" пусть будет так
но вот у меня в сцени два бокса, один является клоном другого и все равно не работает -( ?
RENDERATOR
Чтобы сравнить геометрию необходимо перебирать вершины у обоих обьектов и сравнивать их координаты.
В общем что-то вроде
ENGine
ENGine
Я хотел сделать просто чтобы при экспорте моделей из макса была проверка одинаковых моделей и если таковые имеются экспортировал одну из них. Все работает, но теперь я думаю что такая проверка занимает ещёё больше времени, чем экспорт тупо всех объектов =( (доказательство тому элементарная сцена с 4 чайниками и одним боксом) Вначале я вообще думал макс завис, а оказывается это была вот это проверочка. Что действительно получается лучше экспортировать всю сцену ?
RENDERATOR