День добрый. Впереди букв много поэтому если лень читать переходите в абзац"ЗЫ"
Пишу скрипт. Хочу узнать для выделенных объектов кто из них тяжелее, для этого ищу в цикле количство вершин (фейсов) следующим способом:
for obj in selection do (
polymax=80
meshobj= getPolygonCount obj
if polymax<meshobj[1] do polymax=meshobj[1]
)
проблема в том что при каждом новом выделении тех же объектов(!) максимальное число вершин не правильное.. .То есть не закрывая утилиты я еще раз выделяю те же самые объекты, не перекомпелируя саму утилиту, нажимаю подсчитать, он мне другое уже число выводит..polymax меняю только в этом куске кода. числа которые он путает берет от объектов, реально существующие. похоже на то как будто в цикле пропускат более тяжелые чем 80 вертексов. хотя если выделить один объект на 180 верт. и другой на 230 иногда не ошибется, выведет 230. для единственного объекта выводит его правильное количество.
Еще пробовал писать через snapshotAsMesh. но там тоже ошибка в подсчете((
Другая проблема в том что этот способ не подходит для объектов таких как tube. Пишет что Mesh operation on non-mesh: Tube . А конвертить в едитполи мне нельзя.
ЗЫ: В ИДЕАЛЕ было бы для меня достать до цифр у Vertices и Faces, которые у каждого объекта в Object Properties.. Может кто знает как туда залезть. (для трубы там тоже все прекрасно показывается).
Для любого объекта с сеткой можно получить его сетку и взять оттуда количество вершин и граней:
m = obj.mesh -- получение сетки объекта (TriMesh)
nv = m.verts.count -- количество вершин сетки
nf = m.faces.count -- количество граней сетки
Kruil, если ты хочешь чтоб твой скрипт что-то делал, то убери строчку polymax=80 за пределы цикла. Сейчас ты в каждом проходе цикла сбрасываешь это значение в 80. Это во-первых. А во-вторых функция getPolygonCount 1ым значением выдает количество граней, а не вершин, а количество вершин идет вторым элементом массива. То есть количество вершин у тебя хранится в meshobj[2], а не meshobj[1].
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Ilya Крупко
Пишу скрипт. Хочу узнать для выделенных объектов кто из них тяжелее, для этого ищу в цикле количство вершин (фейсов) следующим способом:
for obj in selection do (
polymax=80
meshobj= getPolygonCount obj
if polymax<meshobj[1] do polymax=meshobj[1]
)
проблема в том что при каждом новом выделении тех же объектов(!) максимальное число вершин не правильное.. .То есть не закрывая утилиты я еще раз выделяю те же самые объекты, не перекомпелируя саму утилиту, нажимаю подсчитать, он мне другое уже число выводит..polymax меняю только в этом куске кода. числа которые он путает берет от объектов, реально существующие. похоже на то как будто в цикле пропускат более тяжелые чем 80 вертексов. хотя если выделить один объект на 180 верт. и другой на 230 иногда не ошибется, выведет 230. для единственного объекта выводит его правильное количество.
Еще пробовал писать через snapshotAsMesh. но там тоже ошибка в подсчете((
Другая проблема в том что этот способ не подходит для объектов таких как tube. Пишет что Mesh operation on non-mesh: Tube . А конвертить в едитполи мне нельзя.
ЗЫ: В ИДЕАЛЕ было бы для меня достать до цифр у Vertices и Faces, которые у каждого объекта в Object Properties.. Может кто знает как туда залезть. (для трубы там тоже все прекрасно показывается).
буду благодарен любым советам =)
Protactinium
m = obj.mesh -- получение сетки объекта (TriMesh)
nv = m.verts.count -- количество вершин сетки
nf = m.faces.count -- количество граней сетки
Kruil, если ты хочешь чтоб твой скрипт что-то делал, то убери строчку polymax=80 за пределы цикла. Сейчас ты в каждом проходе цикла сбрасываешь это значение в 80. Это во-первых. А во-вторых функция getPolygonCount 1ым значением выдает количество граней, а не вершин, а количество вершин идет вторым элементом массива. То есть количество вершин у тебя хранится в meshobj[2], а не meshobj[1].
Ilya Крупко