Render.ru

Изменить номер вертекса

Ro

Знаток
Рейтинг
38
#1
Добрый день, подскажите, пожалуйста, как можно изменить номер вершины одного обьекта на тот номер, который у этой вершины на другом, точно таком же, обьекте? Заранее благодарю

Вершина 126 должна стать 13-й
 

Ro

Знаток
Рейтинг
38
#3
Максим, для дела
На обоих обьектах выделенная вершина должна называться так же, как на правом (т.е. 13). Обьекты и по количеству вершин и по их расположению в пространстве одинаковые, только номера вершин не совпадают
 
Рейтинг
120
#4
Я так понял эти две сферы соединены? Их нужно просто поменять местами?
Тут вам наверное скрипт писать придется. Это ваш второй подобный вопрос, ни кто не знает. Поспрашивайте на cgsociety
 

Ro

Знаток
Рейтинг
38
#5
Это два обьекта, но один является дублем второго. Менять местами не нужно, нужно поменять номера (имена, как угодно) вертексов, что бы номера стали одинаковыми
Без скрипта тут, понятно, не обойтись. Я знаю, как изьять положение в пространстве для каждого вертекса левого обьекта. Мне нужно, видимо, всего 2 команды:
1. Для правого обьекта узнать номер (имя) вертекса, находящегося в точно заданных координатах х, y, z
2. Поменять его номер на тот, который находится в переменной $abc
Я надеюсь, что найдется специалист по скриптам, который знает эти две команды
 

tadpole

Знаток
Рейтинг
24
#6
что бы номера стали одинаковыми надо развернуть дубль на 180 градусов по оси У.
 

Ro

Знаток
Рейтинг
38
#7
Tadpole, спасибо, но, во-первых, сфера - это частный случай. Во-вторых, нумерация не совпадает даже на осях. Нужен универсальный инструмент, который поможет при любой геометрии и любом разбросе нумерации
 

iNOD

Активный участник
Рейтинг
18
#8
Я писал подобный скрипт, но он копирует позиции одних точек и присваивает их точкам другого объекта. Но переименование именно вертексво, по моему нельзя. Хотя поищу и скажу точно.
Вот скрипт о котором я говорил. Но там нужно вручную выделять последовательность, если подойдет такой то могу переписать, что б делало автоматом.

Код:
if (`window -exists cp`) deleteUI -window cp;
window -t "CV" cp;
columnLayout;   
    button -label "copy" -w 100 -c vertexCopy;    
    button -label "paste" -w 100 -c vertexTo;
showWindow;

global proc vertexCopy()
{
global string $vts[];
$vts = `ls -sl -flatten`;
}

global proc vertexTo()
{
string $vtt[] = `ls -sl -flatten`;
int $y;
int $i = 0;
for ($y in $vtt)
    {
    global string $vts[];
    float $d[] = `xform -ws -q -t $vts[$i]`;
    select -r $vtt[$i];
    xform -ws -t $d[0] $d[1] $d[2];
    $i++;
    }
}
 

Ro

Знаток
Рейтинг
38
#10
iNOD, Sanctus, спасибо
iNOD, нужно именно переименование. Надеюсь, что это все же возможно
Sanctus, можно пример такого скрипта? Не доводилось работать с классами
 

iNOD

Активный участник
Рейтинг
18
#11
Что сактус дал ссылку, то не для скриптинга, а для программирования на Visual C. То есть не для написания скрипта в Мае, а класс для Visual C(нужно установить Visual Studio 8 и выше) и писать плагин.
 

iNOD

Активный участник
Рейтинг
18
#12
sanctus спс, давно искал описание API. Хочу заняться написанием плагинов.
 

Dimonn

Активный участник
Рейтинг
15
#13
Вершины идут по порядку, на сколько я знаю изменить этот порядок так как предполагается в Вашем случае не получиться, потому как не нужно это. Лучше скажите что в итоге должно получится, в Maya всегда есть несколько вариантов решения каждой задачи. Возможно Вы сами себя заводите в тупик настаивая именно на таком решении.
 

Ro

Знаток
Рейтинг
38
#14
Я постоянно сталкиваюсь с необходимостью изменить номера вертексов в разных ситуациях
Для примера - есть голова с готовой анимацией и сделанным на ее основе кэшем вертексов
Нужно склеить голову с телом, что бы получить цельную геометрию с анимацией тела и лица. Но при разрезании-склеивании геометрии нумерация вершин изменяется в произвольном порядке, поэтому кэш вертексов головы сюда уже не применить
Самый удобный вариант в этом случае - переименовать вертексы всего тела в соответствии с нумерацией вертексов отдельной головы
Конечно, можно все это сделать и другими способами, но хотелось бы доработать этот простой и быстрый способ анимирования головы, в котором осталось только научиться переименовывать вертексы тела
 

Skif

Администратор 3D галереи
Команда форума
Рейтинг
579
#16
Конечно, можно все это сделать и другими способами, но хотелось бы доработать этот простой и быстрый способ анимирования головы, в котором осталось только научиться переименовывать вертексы тела
http://www.render.ru/forum/viewtopic.php?topic_id=125130&start=80 сообщение 82
 

Владимир Забелин

Активный участник
Рейтинг
17
#18
1. комбайн анимированной головы и тела
2. мерж анимированной головы и тела.
историю не убиваем, поэтому анимация вся сохранится.
3. для каждого кадра анимации дублируем модель. получаем набор фаз анимации
4. убиваем историю и кэш на исходной модели.
5. создаем ин битвин блендшейп между фазами анимации
6. кэшируем деформации на объединенной модели
7. удаляем блендшейп на объединенной модели, оставляем только кэш.

все. получаем ту же самую анимацию на объединенной модели записанную в новый кэш

если с мелом дружим, то можно процесс автоматизировать. если не дружим, то можно сделать руками

0. можно перед первым пунктом превратить кэш головы в инбитвин блендшейп головы (как в пункте 3)

думать надо головой, она для этого телу дается
 

Ro

Знаток
Рейтинг
38
#19
Скиф, Владимир, спасибо за советы
Во-первых, напоминаю, что вопрос в этой теме ставился "как переименовать вершины", а уже как обьединить голову и тело - это лишь пример, для чего этот Mel нужен
Во-вторых, что касается головы и тела, еще раз повторяю, что при Extract faces и Combine нумерация вершин становится другой. Почему это важно:
Может быть, я не правильно изложил условия задачи. Есть тело (цельное, с головой) с одной нумерацией вертексов и есть отрезанная от этого тела голова, после отрезация которой нумерацией вертексов изменилась. Геометрия в районе головы абсолютно одинаковая
Для головы уже есть анимация в виде кэшированных вертексов, а для тела есть мускулы, настройки весов для которых сохранены в файл. Напоминаю, что веса мускулов сохраняются так, что важно оставить без изменений нумерацию и количество вертексов геометрии. На ту же геометрию, но с имененными номерами вертексов, эти веса уже не импортируешь
Итак, анимация головы сохранена для одной нумерации вертексов, анимация тела сохранена для другой нумерации вертексов. Такая абсурдная ситуация как раз и связана с тем, что при отрезании головы от тела нумерация изменяется
1. Да, можно делать анимацию головы вместе с телом, но анимация делается в Face robot и количество полигонов играет роль, поэтому голова и отрезается
2. Да, можно заного разрисовать мускулы после Combine анимированной головы и тела
3. Можно спросить на форуме, знает ли кто-нибудь волшебную Mel команду, что бы переименовать вершины и закончить быстрый способ пайплайна для работы с анимацией
 

Skif

Администратор 3D галереи
Команда форума
Рейтинг
579
#20
да блин никак ты не перенумеруешь вертексы. ведь когда ты сменишь номер вертекса, к примеру с 233 на 15 то тот вертекс у которого был номер 15 приобретет какой номер? 233? нет. тебе чуть ли не по точкам придется всю модель пройти.
можно конечно поизвращаться с врапом. но тупить будет безбожно. можно вообще через смешивание кеша все сделать.
ну а вообще это не пайплайн. он не продуман. извини не хочу обидеть просто прежде чем делать нужно прдумать мелочи. у тебя можно попробовать такой вариант. выбрать все полигоны головы, и удалить их при этом не убивая историю.потом сделать копию головы в стандартном положении. сделать бленд шейп на нее. потом комбайн и пришить вертексы как было уже сказано. но это через задницу и врядли норм будет работать. кстати вопрос. ты сказал что мускулы а потом перейти к анимации? эээ так делать вообще не вариант. анимацию делать с мускулами - это тот еще геморой. тормоза, баги короч анимаировать невозможно.
мы делаем так. есть риг для аниматоров. есть риг для динамщиков. и есть риг с мускулами. это абсолютно разные риги. даже модели разные.
тока название костей и контролов одинаковое. все подгружено через референс. аниматоры работают с очень легким ригом. там модели очень лоу поли. но есть мимика. потом просто вместо этого рига подгружается например риг с мускулами. и в каждой сцене задается разные параметры на разные мускулы. универсальных параметров нет. потом снимается кеш, потом кеш мускулов, клинапится, тоесть исправляются все косяки, потом кеш снимается с мимики (на риге с мускулами фейс рига нет). происходит смешивание кеша (опять же через блендшейп) потом снова проверка и если надо клинап. и только после этого кеш идет на рендер. если есть волосы или динамика то переде рендером симуляция. потом снимается кеш например с одежды, и волос.. потом получается все модели в кеше. потом программа для рендера собирает все кеши на уже оттекстуреной модели, и шлет на рендер.(ну там еще предварительно освещение туда же идет..) короч самое простое - это сделать заново. у меня кстати была ситуация. тупо сказали поправить скин на модели. я правлю а вертексы скачут. я неделю боролся. плюнул и за день сделал с нуля и без проблем.
а вообще можно сделать так. просто сдублировать голову с рига. подставить голову с фейс робота. и врап. а потом просто смешивать кеш.
 
Сверху