1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

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

Тема в разделе "Maya", создана пользователем Ro, 7 май 2012.

Модераторы: Dark™, Skif
  1. Ro

    Ro Знаток

    С нами с:
    28.11.2007
    Сообщения:
    291
    Симпатии:
    0
    Баллы:
    28
    Добрый день, подскажите, пожалуйста, как можно изменить номер вершины одного обьекта на тот номер, который у этой вершины на другом, точно таком же, обьекте? Заранее благодарю
    [​IMG]
    Вершина 126 должна стать 13-й
     
  2. korky

    korky Мастер

    С нами с:
    03.10.2007
    Сообщения:
    184
    Симпатии:
    1
    Баллы:
    117
    Ну и зачем вам это)) Это как 126, 13 вы о чем?
     
  3. Ro

    Ro Знаток

    С нами с:
    28.11.2007
    Сообщения:
    291
    Симпатии:
    0
    Баллы:
    28
    Максим, для дела
    На обоих обьектах выделенная вершина должна называться так же, как на правом (т.е. 13). Обьекты и по количеству вершин и по их расположению в пространстве одинаковые, только номера вершин не совпадают
     
  4. korky

    korky Мастер

    С нами с:
    03.10.2007
    Сообщения:
    184
    Симпатии:
    1
    Баллы:
    117
    Я так понял эти две сферы соединены? Их нужно просто поменять местами?
    Тут вам наверное скрипт писать придется. Это ваш второй подобный вопрос, ни кто не знает. Поспрашивайте на cgsociety
     
  5. Ro

    Ro Знаток

    С нами с:
    28.11.2007
    Сообщения:
    291
    Симпатии:
    0
    Баллы:
    28
    Это два обьекта, но один является дублем второго. Менять местами не нужно, нужно поменять номера (имена, как угодно) вертексов, что бы номера стали одинаковыми
    Без скрипта тут, понятно, не обойтись. Я знаю, как изьять положение в пространстве для каждого вертекса левого обьекта. Мне нужно, видимо, всего 2 команды:
    1. Для правого обьекта узнать номер (имя) вертекса, находящегося в точно заданных координатах х, y, z
    2. Поменять его номер на тот, который находится в переменной $abc
    Я надеюсь, что найдется специалист по скриптам, который знает эти две команды
     
  6. tadpole

    tadpole Знаток

    С нами с:
    12.08.2005
    Сообщения:
    712
    Симпатии:
    1
    Баллы:
    24
    что бы номера стали одинаковыми надо развернуть дубль на 180 градусов по оси У.
     
  7. Ro

    Ro Знаток

    С нами с:
    28.11.2007
    Сообщения:
    291
    Симпатии:
    0
    Баллы:
    28
    Tadpole, спасибо, но, во-первых, сфера - это частный случай. Во-вторых, нумерация не совпадает даже на осях. Нужен универсальный инструмент, который поможет при любой геометрии и любом разбросе нумерации
     
  8. iNOD

    iNOD Активный участник

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    Я писал подобный скрипт, но он копирует позиции одних точек и присваивает их точкам другого объекта. Но переименование именно вертексво, по моему нельзя. Хотя поищу и скажу точно.
    Вот скрипт о котором я говорил. Но там нужно вручную выделять последовательность, если подойдет такой то могу переписать, что б делало автоматом.

    Код:
    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++;
        }
    }
    
     
  9. sanctus

    sanctus Активный участник

    С нами с:
    29.08.2006
    Сообщения:
    312
    Симпатии:
    0
    Баллы:
    16
  10. Ro

    Ro Знаток

    С нами с:
    28.11.2007
    Сообщения:
    291
    Симпатии:
    0
    Баллы:
    28
    iNOD, Sanctus, спасибо
    iNOD, нужно именно переименование. Надеюсь, что это все же возможно
    Sanctus, можно пример такого скрипта? Не доводилось работать с классами
     
  11. iNOD

    iNOD Активный участник

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    Что сактус дал ссылку, то не для скриптинга, а для программирования на Visual C. То есть не для написания скрипта в Мае, а класс для Visual C(нужно установить Visual Studio 8 и выше) и писать плагин.
     
  12. iNOD

    iNOD Активный участник

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    sanctus спс, давно искал описание API. Хочу заняться написанием плагинов.
     
  13. Dimonn

    Dimonn Активный участник

    С нами с:
    26.05.2009
    Сообщения:
    93
    Симпатии:
    13
    Баллы:
    8
    Вершины идут по порядку, на сколько я знаю изменить этот порядок так как предполагается в Вашем случае не получиться, потому как не нужно это. Лучше скажите что в итоге должно получится, в Maya всегда есть несколько вариантов решения каждой задачи. Возможно Вы сами себя заводите в тупик настаивая именно на таком решении.
     
  14. Ro

    Ro Знаток

    С нами с:
    28.11.2007
    Сообщения:
    291
    Симпатии:
    0
    Баллы:
    28
    Я постоянно сталкиваюсь с необходимостью изменить номера вертексов в разных ситуациях
    Для примера - есть голова с готовой анимацией и сделанным на ее основе кэшем вертексов
    Нужно склеить голову с телом, что бы получить цельную геометрию с анимацией тела и лица. Но при разрезании-склеивании геометрии нумерация вершин изменяется в произвольном порядке, поэтому кэш вертексов головы сюда уже не применить
    Самый удобный вариант в этом случае - переименовать вертексы всего тела в соответствии с нумерацией вертексов отдельной головы
    Конечно, можно все это сделать и другими способами, но хотелось бы доработать этот простой и быстрый способ анимирования головы, в котором осталось только научиться переименовывать вертексы тела
     
  15. Владимир Забелин

    Владимир Забелин Активный участник

    С нами с:
    19.04.2012
    Сообщения:
    400
    Симпатии:
    12
    Баллы:
    17
    перенумеровать точки нельзя. для склеивания головы, имеющей анимацию с телом ищите другие способы. они есть.
     
  16. Skif vip

    Skif Administrator Команда форума

    С нами с:
    26.03.2004
    Сообщения:
    6.826
    Симпатии:
    417
    Баллы:
    2.787
    http://www.render.ru/forum/viewtopic.php?topic_id=125130&start=80 сообщение 82
     
  17. Покатигорошек

    Покатигорошек Активный участник

    С нами с:
    09.12.2005
    Сообщения:
    232
    Симпатии:
    3
    Баллы:
    15
    ну да! например, написать "свой" кэш вертексов..))
     
  18. Владимир Забелин

    Владимир Забелин Активный участник

    С нами с:
    19.04.2012
    Сообщения:
    400
    Симпатии:
    12
    Баллы:
    17
    1. комбайн анимированной головы и тела
    2. мерж анимированной головы и тела.
    историю не убиваем, поэтому анимация вся сохранится.
    3. для каждого кадра анимации дублируем модель. получаем набор фаз анимации
    4. убиваем историю и кэш на исходной модели.
    5. создаем ин битвин блендшейп между фазами анимации
    6. кэшируем деформации на объединенной модели
    7. удаляем блендшейп на объединенной модели, оставляем только кэш.

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

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

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

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

    Ro Знаток

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

    Skif Administrator Команда форума

    С нами с:
    26.03.2004
    Сообщения:
    6.826
    Симпатии:
    417
    Баллы:
    2.787
    да блин никак ты не перенумеруешь вертексы. ведь когда ты сменишь номер вертекса, к примеру с 233 на 15 то тот вертекс у которого был номер 15 приобретет какой номер? 233? нет. тебе чуть ли не по точкам придется всю модель пройти.
    можно конечно поизвращаться с врапом. но тупить будет безбожно. можно вообще через смешивание кеша все сделать.
    ну а вообще это не пайплайн. он не продуман. извини не хочу обидеть просто прежде чем делать нужно прдумать мелочи. у тебя можно попробовать такой вариант. выбрать все полигоны головы, и удалить их при этом не убивая историю.потом сделать копию головы в стандартном положении. сделать бленд шейп на нее. потом комбайн и пришить вертексы как было уже сказано. но это через задницу и врядли норм будет работать. кстати вопрос. ты сказал что мускулы а потом перейти к анимации? эээ так делать вообще не вариант. анимацию делать с мускулами - это тот еще геморой. тормоза, баги короч анимаировать невозможно.
    мы делаем так. есть риг для аниматоров. есть риг для динамщиков. и есть риг с мускулами. это абсолютно разные риги. даже модели разные.
    тока название костей и контролов одинаковое. все подгружено через референс. аниматоры работают с очень легким ригом. там модели очень лоу поли. но есть мимика. потом просто вместо этого рига подгружается например риг с мускулами. и в каждой сцене задается разные параметры на разные мускулы. универсальных параметров нет. потом снимается кеш, потом кеш мускулов, клинапится, тоесть исправляются все косяки, потом кеш снимается с мимики (на риге с мускулами фейс рига нет). происходит смешивание кеша (опять же через блендшейп) потом снова проверка и если надо клинап. и только после этого кеш идет на рендер. если есть волосы или динамика то переде рендером симуляция. потом снимается кеш например с одежды, и волос.. потом получается все модели в кеше. потом программа для рендера собирает все кеши на уже оттекстуреной модели, и шлет на рендер.(ну там еще предварительно освещение туда же идет..) короч самое простое - это сделать заново. у меня кстати была ситуация. тупо сказали поправить скин на модели. я правлю а вертексы скачут. я неделю боролся. плюнул и за день сделал с нуля и без проблем.
    а вообще можно сделать так. просто сдублировать голову с рига. подставить голову с фейс робота. и врап. а потом просто смешивать кеш.
     
Модераторы: Dark™, Skif

Поделиться этой страницей