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

Построение фигуры по координатам

Тема в разделе "Maya", создана пользователем C'mon, 23 окт 2008.

Модераторы: Dark™, Skif
  1. C'mon

    C'mon Пользователь сайта

    С нами с:
    21.10.2008
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    2
    Добрый день!
    Хочу обратиться к вам с просьбой о помощи.
    Излагаю свою проблему:
    В наличии имеется файл с расширением *.asc (ASCII) с набором координат определённой фигуры. В нем просто содержится три столбца чисел (координаты по X, Y, Z). При необходимости все эти координаты можно скопировать и в обычный текстовый файл. Так вот возникла идея с помощью этих координат построить эту фигуру в Maya. Не знаю, как лучше это сделать, может в Maya есть какие-нибудь встроенные функции для этого или нужно писать свой скрипт? В программировании, к сожалению, я не очень силен, поэтому хочется понять, как лучше поступить, и если придётся писать свой скрипт, как лучше это сделать?!
    Если возникнут какие-нибудь вопросы, с удовольствием на них отвечу.
    Заранее огромное всем спасибо за помощь.
     
  2. fm4

    fm4 Знаток

    С нами с:
    04.01.2008
    Сообщения:
    572
    Симпатии:
    0
    Баллы:
    29
    Уважаемый C'mon,

    Почитайте в интернете о формате obj. В самом простом случае вам понадобиться всего лишь добавить в начало каждой строки букву v и проставить запятые.
     
  3. fm4

    fm4 Знаток

    С нами с:
    04.01.2008
    Сообщения:
    572
    Симпатии:
    0
    Баллы:
    29
    С запятыми это я по торопился. :)
    Вот здесь есть примеры. http://en.wikipedia.org/wiki/Obj
     
  4. C'mon

    C'mon Пользователь сайта

    С нами с:
    21.10.2008
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    2
    Спасибо!
    То есть если преобразовать файл *.asc в файл *.obj (добавить "v" в начало каждой строки) его можно будет автоматом грузить в Maya, я Вас правильно понял?
     
  5. fm4

    fm4 Знаток

    С нами с:
    04.01.2008
    Сообщения:
    572
    Симпатии:
    0
    Баллы:
    29
    Я думаю да. Наверное надо добавить тэг "o" на отдельной строке для того чтобы у импортированного объекты было имя.
    В результате получится объект без граней - такое облако точек.

    Если не получится, попробуйте заменить тэг "v" на тэг "p".
     
  6. fm4

    fm4 Знаток

    С нами с:
    04.01.2008
    Сообщения:
    572
    Симпатии:
    0
    Баллы:
    29
    А он у вас случайно не так выглядит? http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/asc/
     
  7. C'mon

    C'mon Пользователь сайта

    С нами с:
    21.10.2008
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    2
    Нет, у меня просто набор координат через пробел.
    Такого вида:
    1.2 0.3 1.4
    0.1 1.6 0.5
    2.3 3.7 -1.4
     
  8. fm4

    fm4 Знаток

    С нами с:
    04.01.2008
    Сообщения:
    572
    Симпатии:
    0
    Баллы:
    29
    Интересно что это такое.
    Ну хорошо, это координаты точек. А как они собираются описывать грани? Координаты не повторяются?
     
  9. alex_alv

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

    С нами с:
    23.04.2008
    Сообщения:
    150
    Симпатии:
    0
    Баллы:
    14
    В этом скрипте в первой строчке замеите имя файла на нужное.

    string $FileName="c:\\testv.txt";

    int $Handle;
    string $nextLine;
    string $command;
    $Handle=`fopen $FileName "r"`;
    if($Handle==0)error("Can not open file.\n");
    $command="polyCreateFacet";
    while ( !`feof $Handle` )
    {
    $nextLine = `fgetline $Handle`;
    if(size( $nextLine ) > 0 )
    {
    $command=$command+" -p "+$nextLine;
    }
    }
    fclose($Handle);
    eval($command);
     
  10. alex_alv

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

    С нами с:
    23.04.2008
    Сообщения:
    150
    Симпатии:
    0
    Баллы:
    14
    Кстати, можно просто скопировать эти координаты в скрипт-едитор, и перед первой строчкой написать polyCreateFacet -p, а перед каждой следующей - просто -p.
    В конце последней поставить ; и выполнить получившуюся команду (собственно, это и делается в приведенном выше скрипте).
     
  11. Vladimir Frolov

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

    С нами с:
    09.07.2004
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    16
    Изначально надо определить откуда эти данные были выбиты???
    Это сканер поработал или может быть это старые перфокарты ?
    Вариантов очень много надо сузить круг.
    ???
    Большинство форматов данных описаны в гостах или ещё гделиботак что надо рыть там откуда были взяты данные! а потом уже описывать скрипты или АПИ юзать
     
  12. C'mon

    C'mon Пользователь сайта

    С нами с:
    21.10.2008
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    2
    To Vladimir Frolov:
    Данные эти получены с помощью 3D-сканера, но, к сожалению, рыть особо негде, потому что никакой документации по этому сканеру нет.
    Скрипт, предложенный alex_alv думаю мне поможет на первом этапе. А дальше будет видно. alex_alv, спасибо Вам большое!
     
  13. Vladimir Frolov

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

    С нами с:
    09.07.2004
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    16
    Что за аппарат ты используеш?
    Вендор должен давать информацию по выходному потому. Так что зря ты так
     
  14. alex_alv

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

    С нами с:
    23.04.2008
    Сообщения:
    150
    Симпатии:
    0
    Баллы:
    14
    Если это - 3D-сканер, то мой способ не подойдет, так как он создает полигон из одного фэйсика, у которого ребра поочередно обходят указанные в файле точки в порядке, в котором они идут в файле. Т. е., скрипт строит фигуру по заданным координатам, что и было изначальной задачей.

    Очевидно, для того, чтобы импортить данные от 3D-сканера, требуется из облака точек построить 3D-модель, а не фигуру. Для посторения модели, требуется сложный алгоритм, который проанализирует заданное облако точек и придумает, сколько и каких фэйсиков нужно создать, и какие точки будут являться вешинами данной модели, и как они будут соединяться ребрами.
    Это - уже гораздо более сложный алгоритм. Более того, данная задача не имеет однозначного и самого правильного решения. Решени может быть много. Соответственно, придуманный алгоритм не будет являться идеальным по определению.
    Кроме того, алгоритм может быть еще усложнен тем, что он может построить низкополигональную модель и сделать bump карту (или карту дисплейсмента).

    Задача довольно сложная. Для ее упрощения, ее нужно решать для конкретной модели. Т. е. нужно поставить задачу, что например, есть отсканированная конкретная голова. И писать алгоритм (который может быть реализован как на MEL, так и с помощью других средств) под конкретную эту голову. Это лучше, чем заниматься универсальным вариантом данного алгоритма. А еще лучше - попробовать поискать универсальное решение, которое сделано кем-то другим. Естественно, оно будет работать хуже, так как оно является универсальным, а под конкретную ситуацию можно создать более хороший вариант решения. Но скорее всего, этот универсальный вариант вполне удовлетворит Вас.
     
  15. Vladimir Frolov

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

    С нами с:
    09.07.2004
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    16
    Очень много слов универсальный....
    Просто приходилось работать с кодом от не одного типа сканера. Естественно решать задачу построения поверхности по облаку точек это не есть тривиальная задача и тем более формат точек оторый снимается с обьекта. Точки можно снимать рукой можно снимать полосой можно снимать лазером вобщем надо знать что за аппарат был а дальше уже смотреть по нему......
     
  16. C'mon

    C'mon Пользователь сайта

    С нами с:
    21.10.2008
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    2
    Владимир, а какая конкретно информация по сканеру нужна, чтобы понять, как правильно строить модель по облаку точек, полученному из этого сканера?
     
  17. Vladimir Frolov

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

    С нами с:
    09.07.2004
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    16
    Нет можно обойтись и без этой инфрмации какого она рода просто всё будет зависить от скорости. Принятия решения.
    Есть просто системы которые сторят поверхности 7 порядка по полученным данным и всё зависит от отдела который занимается этими делами. Просто если рядом нет математика серьёзного этот вопрост просто так не решить.
    К примеру просто сними облако точек с обьекта который крутиться под равномерным углом на горизонтальной поверхности и облако точек которое построенно с руки которая снимает ряд точек после центрирования....
    Я думаю есть разница
     
  18. C'mon

    C'mon Пользователь сайта

    С нами с:
    21.10.2008
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    2
    А не подскажите, где лучше поискать какие-нибудь алгоритмы для решения моей задачки?! А то у меня поиски пока особого результата не дают...
     
  19. alex_alv

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

    С нами с:
    23.04.2008
    Сообщения:
    150
    Симпатии:
    0
    Баллы:
    14
    По-моему, на позопрошлом CG-event была демонстрация 3D-сканера. Там же раздавали диски от этой компании.
    У них точно была программа, которая решала данную задачу. Возможно, она даже есть на этом диске.
    Возможно, даже эти диски можно будет приобрести на следующем CG-event.
    Будет время - посмотрю (у меня этот диск где-то валяется)...
     
  20. C'mon

    C'mon Пользователь сайта

    С нами с:
    21.10.2008
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    2
    Посмотрите, пожалуйста, если будет время.
    Заранее благодарю!
     
Модераторы: Dark™, Skif

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