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

проверка топологии

Тема в разделе "Maya", создана пользователем Snusmumrik, 10 мар 2014.

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

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

    С нами с:
    19.01.2006
    Сообщения:
    47
    Симпатии:
    33
    Баллы:
    8
    Пожалуйста подскажите способ быстро отыскать все точки на модели в которые сходятся более 5 граней. Cleanap такой функции не имеет. Может есть скрипт. Вероятно проблемка пустяковая, но с ходу не нашел. Буду благодарен за подсказку.
     
  2. Владимир Забелин

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

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

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

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    Воть :

    Код:
    global proc strVtx(){
    string $slctdMsh[] = ` ls -sl `;
    string $slctdEdgs[];
    string $lstStr[];
    int $a = 0;
    
    int $vtxCnt[] = ` polyEvaluate -v $slctdMsh[0] `;
    
    
    for( $i = 0; $i < $vtxCnt[0]; $i++ ){
        clear( $slctdEdgs );
        select -r ( $slctdMsh[0] + ".vtx[" + $i + "]" );
        ConvertSelectionToEdges;
        $slctdEdgs = ` ls -sl `;
        if( size( $slctdEdgs ) == 5 ){
            $lstStr[$a] = ( $slctdMsh[0] + ".vtx[" + $i + "]" );
            $a++;
        }
        }
        select -r $lstStr;
    }
    
    strVtx;
    
     
  4. Владимир Забелин

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

    С нами с:
    19.04.2012
    Сообщения:
    400
    Симпатии:
    12
    Баллы:
    17
    да. тоже вариант
     
  5. Snusmumrik

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

    С нами с:
    19.01.2006
    Сообщения:
    47
    Симпатии:
    33
    Баллы:
    8
    не работает, но все равно спасибо. Понятно, что mel поможет, но ради такой задачки учить его как-то нерационально. Подожду пока созреет более существенная потребность. Может в других программах есть более широкий ассортимент инструментов проверки?
     
  6. Lemieux

    Lemieux Знаток

    С нами с:
    08.06.2011
    Сообщения:
    810
    Симпатии:
    74
    Баллы:
    32
    Ну я бы не был столь категоричен, что его нужно прямо изучать. Нужно понять принципы и пользоваться хелпом.
     
  7. iNOD

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

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    Не знаю что у вас там не работает, я проверял и работало. Выделаете просто меш в режиме обжект и запускаете скрипт, скрипт нужно запускать с скрипт эдитора(можно так же создать батон на шелфе и вкинуть туда код), но это должен быть MEL а не Pyton!
     
  8. Snusmumrik

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

    С нами с:
    19.01.2006
    Сообщения:
    47
    Симпатии:
    33
    Баллы:
    8
    Я извиняюсь, но правда не совсем работает. Выделяются только точки в которые сходятся 5 ( не больше не меньше )ребер и то не все почему-то.
     

    Вложения:

    • 3310390.jpg
      3310390.jpg
      Размер файла:
      429,2 КБ
      Просмотров:
      90
  9. iNOD

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

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    заменить строчку:
    Код:
    if( size( $slctdEdgs ) == 5 ){ 
    
    на:
    Код:
    if( size( $slctdEdgs ) >= 5 ){ 
    
     
  10. Snusmumrik

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

    С нами с:
    19.01.2006
    Сообщения:
    47
    Симпатии:
    33
    Баллы:
    8
    Да я даже сам догадался поменять знак " = "на ">", только постеснялся сказать, поскольку это не дало принципиального различия. Все равно не все точки с 5 ребрами выделяются, с 7 ребрами тоже не выделяются, с 6 ребрами часть выделяется и принцип отбора непонятен.
     
  11. Monkibase

    Monkibase Мастер

    С нами с:
    01.09.2006
    Сообщения:
    807
    Симпатии:
    30
    Баллы:
    374
    Вот есть) Удобная функция
     

    Вложения:

    • 3311155.jpg
      3311155.jpg
      Размер файла:
      1,4 МБ
      Просмотров:
      85
  12. iNOD

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

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    Ой сори действительно ошибся, проверял на равномерной топологии вот и не вылезла тогда ошибка.
    Вместо:
    Код:
    $slctdEdgs = ` ls -sl `;
    Нужно:
    Код:
    $slctdEdgs = ` ls -sl -fl `;
    Но Monkibase уже показал еще один способ. Так что методов выполнить одну задачу существует несколько, и бывает и десятки, нужно лишь желание.
     
  13. Snusmumrik

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

    С нами с:
    19.01.2006
    Сообщения:
    47
    Симпатии:
    33
    Баллы:
    8
    Большое Спасибо. Всё работает. хотя скрипт на полке удобнее, здорово, что есть и в инструментарии подходящие настройки.
     
  14. Владимир Забелин

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

    С нами с:
    19.04.2012
    Сообщения:
    400
    Симпатии:
    12
    Баллы:
    17
    дык и "инструмент " можно на полочку положить....
     
Модераторы: Dark™, Skif

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