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

Преобразование координат в 3D MAX.

Тема в разделе "Общие вопросы", создана пользователем x5reunion, 20 апр 2014.

Модераторы: Артер
  1. x5reunion

    x5reunion Пользователь сайта

    С нами с:
    18.04.2014
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    Всем привет я далек от 3D дизайна, я занимаюсь программированием. Моя задача перетащить модель из 3D Max в DirectX.

    Заранее извиняюсь если слишком большой текст я не нашел опции скрыть код, или вопрос не в тот раздел. Просто я не знаю у кого еще спросить.

    У меня вопрос. Я нашел ед пример для obj формата и то из Майи.

    Как вот это?

    Код:
    mtllib cube.mtl
    g default
    v -0.500000 -0.500000 0.500000
    v 0.500000 -0.500000 0.500000
    v -0.500000 0.500000 0.500000
    v 0.500000 0.500000 0.500000
    v -0.500000 0.500000 -0.500000
    v 0.500000 0.500000 -0.500000
    v -0.500000 -0.500000 -0.500000
    v 0.500000 -0.500000 -0.500000
    vt 0.001992 0.001992
    vt 0.998008 0.001992
    vt 0.001992 0.998008
    vt 0.998008 0.998008
    vt 0.001992 0.001992
    vt 0.998008 0.001992
    vt 0.001992 0.998008
    vt 0.998008 0.998008
    vt 0.001992 0.001992
    vt 0.998008 0.001992
    vt 0.001992 0.998008
    vt 0.998008 0.998008
    vt 0.001992 0.001992
    vt 0.998008 0.001992
    vt 0.001992 0.998008
    vt 0.998008 0.998008
    vt 0.001992 0.001992
    vt 0.998008 0.001992
    vt 0.001992 0.998008
    vt 0.998008 0.998008
    vt 0.998008 0.998008
    vt 0.001992 0.998008
    vt 0.998008 0.001992
    vt 0.001992 0.001992
    vn 0.000000 0.000000 1.000000
    vn 0.000000 0.000000 1.000000
    vn 0.000000 0.000000 1.000000
    vn 0.000000 0.000000 1.000000
    vn 0.000000 1.000000 0.000000
    vn 0.000000 1.000000 0.000000
    vn 0.000000 1.000000 0.000000
    vn 0.000000 1.000000 0.000000
    vn 0.000000 0.000000 -1.000000
    vn 0.000000 0.000000 -1.000000
    vn 0.000000 0.000000 -1.000000
    vn 0.000000 0.000000 -1.000000
    vn 0.000000 -1.000000 0.000000
    vn 0.000000 -1.000000 0.000000
    vn 0.000000 -1.000000 0.000000
    vn 0.000000 -1.000000 0.000000
    vn 1.000000 0.000000 0.000000
    vn 1.000000 0.000000 0.000000
    vn 1.000000 0.000000 0.000000
    vn 1.000000 0.000000 0.000000
    vn -1.000000 0.000000 0.000000
    vn -1.000000 0.000000 0.000000
    vn -1.000000 0.000000 0.000000
    vn -1.000000 0.000000 0.000000
    s 1
    g pCube1
    usemtl file1SG
    f 1/1/1 2/2/2 3/3/3
    f 3/3/3 2/2/2 4/4/4
    s 2
    f 3/13/5 4/14/6 5/15/7
    f 5/15/7 4/14/6 6/16/8
    s 3
    f 5/21/9 6/22/10 7/23/11
    f 7/23/11 6/22/10 8/24/12
    s 4
    f 7/17/13 8/18/14 1/19/15
    f 1/19/15 8/18/14 2/20/16
    s 5
    f 2/5/17 8/6/18 4/7/19
    f 4/7/19 8/6/18 6/8/20
    s 6
    f 7/9/21 1/10/22 5/11/23
    f 5/11/23 1/10/22 3/12/24

    Преобразовать вот в это?

    Код:
    Vertex Count: 36
    
    Data:
    
    -0.5 0.5 -0.5 0.001992 0.00199199 0 0 -1
    0.5 -0.5 -0.5 0.998008 0.998008 0 0 -1
    -0.5 -0.5 -0.5 0.001992 0.998008 0 0 -1
    0.5 0.5 -0.5 0.998008 0.00199199 0 0 -1
    0.5 -0.5 -0.5 0.998008 0.998008 0 0 -1
    -0.5 0.5 -0.5 0.001992 0.00199199 0 0 -1
    -0.5 0.5 0.5 0.001992 0.00199199 0 1 -0
    0.5 0.5 -0.5 0.998008 0.998008 0 1 -0
    -0.5 0.5 -0.5 0.001992 0.998008 0 1 -0
    0.5 0.5 0.5 0.998008 0.00199199 0 1 -0
    0.5 0.5 -0.5 0.998008 0.998008 0 1 -0
    -0.5 0.5 0.5 0.001992 0.00199199 0 1 -0
    -0.5 -0.5 0.5 0.998008 0.998008 0 0 1
    0.5 0.5 0.5 0.001992 0.00199199 0 0 1
    -0.5 0.5 0.5 0.998008 0.00199199 0 0 1
    0.5 -0.5 0.5 0.001992 0.998008 0 0 1
    0.5 0.5 0.5 0.001992 0.00199199 0 0 1
    -0.5 -0.5 0.5 0.998008 0.998008 0 0 1
    -0.5 -0.5 -0.5 0.001992 0.00199199 0 -1 -0
    0.5 -0.5 0.5 0.998008 0.998008 0 -1 -0
    -0.5 -0.5 0.5 0.001992 0.998008 0 -1 -0
    0.5 -0.5 -0.5 0.998008 0.00199199 0 -1 -0
    0.5 -0.5 0.5 0.998008 0.998008 0 -1 -0
    -0.5 -0.5 -0.5 0.001992 0.00199199 0 -1 -0
    0.5 0.5 -0.5 0.001992 0.00199199 1 0 -0
    0.5 -0.5 0.5 0.998008 0.998008 1 0 -0
    0.5 -0.5 -0.5 0.001992 0.998008 1 0 -0
    0.5 0.5 0.5 0.998008 0.00199199 1 0 -0
    0.5 -0.5 0.5 0.998008 0.998008 1 0 -0
    0.5 0.5 -0.5 0.001992 0.00199199 1 0 -0
    -0.5 0.5 0.5 0.001992 0.00199199 -1 0 -0
    -0.5 -0.5 -0.5 0.998008 0.998008 -1 0 -0
    -0.5 -0.5 0.5 0.001992 0.998008 -1 0 -0
    -0.5 0.5 -0.5 0.998008 0.00199199 -1 0 -0
    -0.5 -0.5 -0.5 0.998008 0.998008 -1 0 -0
    -0.5 0.5 0.5 0.001992 0.00199199 -1 0 -0
    Как все это объединить?

    Должны же быть какие то формулы? Где про это прочитать? Перерывать всю алгебру и геометрию и тригонометрию, не понимая что искать, это займет огромное кол-во времени и не даст результата.


    Аналогично у меня есть модель куба из 3D Max.

    Код:
    v  -0.5000 0.0000 0.5000
    v  -0.5000 0.0000 -0.5000
    v  0.5000 0.0000 -0.5000
    v  0.5000 0.0000 0.5000
    v  -0.5000 1.0000 0.5000
    v  0.5000 1.0000 0.5000
    v  0.5000 1.0000 -0.5000
    v  -0.5000 1.0000 -0.5000
    # 8 vertices
    
    vn 0.0000 -1.0000 -0.0000
    vn 0.0000 1.0000 -0.0000
    vn 0.0000 0.0000 1.0000
    vn 1.0000 0.0000 -0.0000
    vn 0.0000 0.0000 -1.0000
    vn -1.0000 0.0000 -0.0000
    # 6 vertex normals
    
    vt 0.3393 0.6607 0.0000
    vt 0.3393 0.3393 0.0000
    vt 0.6607 0.3393 0.0000
    vt 0.6607 0.6607 0.0000
    vt 0.0100 0.6686 0.0000
    vt 0.3314 0.6686 0.0000
    vt 0.3314 0.9900 0.0000
    vt 0.0100 0.9900 0.0000
    vt 0.3393 0.0100 0.0000
    vt 0.6607 0.0100 0.0000
    vt 0.6607 0.3314 0.0000
    vt 0.3393 0.3314 0.0000
    vt 0.6686 0.0100 0.0000
    vt 0.9900 0.0100 0.0000
    vt 0.9900 0.3314 0.0000
    vt 0.6686 0.3314 0.0000
    vt 0.0100 0.3393 0.0000
    vt 0.3314 0.3393 0.0000
    vt 0.3314 0.6607 0.0000
    vt 0.0100 0.6607 0.0000
    vt 0.0100 0.0100 0.0000
    vt 0.3314 0.0100 0.0000
    vt 0.3314 0.3314 0.0000
    vt 0.0100 0.3314 0.0000
    # 24 texture coords
    
    g Box003
    usemtl Material__25
    f 1/1/1 2/2/1 3/3/1 
    f 3/3/1 4/4/1 1/1/1 
    f 5/5/2 6/6/2 7/7/2 
    f 7/7/2 8/8/2 5/5/2 
    f 1/9/3 4/10/3 6/11/3 
    f 6/11/3 5/12/3 1/9/3 
    f 4/13/4 3/14/4 7/15/4 
    f 7/15/4 6/16/4 4/13/4 
    f 3/17/5 2/18/5 8/19/5 
    f 8/19/5 7/20/5 3/17/5 
    f 2/21/6 1/22/6 5/23/6 
    f 5/23/6 8/24/6 2/21/6 
    # 12 faces
    Я знаю какие буквы что обозначают, допустим

    f 1/1/1 2/2/1 3/3/1
    Vertex[1] - > texture[1] -> normals[1] ; Vertex[2] - > texture[2] -> normals[2] ; Vertex[3] - > texture[3] -> normals[3] ;

    Обратил внимание что в майе идет сперва

    v -0.500000 -0.500000 0.500000
    /.....
    vt 0.001992 0.001992
    /....
    vn 0.000000 0.000000 1.000000

    А в максе

    v -0.5000 0.0000 0.5000
    /....
    vn 0.0000 -1.0000 -0.0000
    /....
    vt 0.3393 0.6607 0.0000

    Значит ли это что и идут в другом порядке? f 1/1/1 2/2/1 3/3/1
     
  2. x5reunion

    x5reunion Пользователь сайта

    С нами с:
    18.04.2014
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    Я разобрался частично с проблемой.

    Оказывается

    v -0.5000 0.0000 0.5000 = 1
    v -0.5000 0.0000 -0.5000 = 2
    v 0.5000 0.0000 -0.5000 = 3
    v 0.5000 0.0000 0.5000 и т.д
    /*****
    ****/
    # 8 vertices


    vn 0.0000 -1.0000 -0.0000 = 1
    vn 0.0000 1.0000 -0.0000 = 2
    vn 0.0000 0.0000 1.0000 = 3
    /**** и т.д
    ****/
    # 6 vertex normals


    vt 0.3393 0.6607 0.0000 = 1
    vt 0.3393 0.3393 0.0000 = 2
    vt 0.6607 0.3393 0.0000 = 3
    /****
    ****/
    # 24 texture coords


    Соответствует количеству face. И никогда не будет превышать максимальную цифру.


    Тоесть запись
    f 1/1/1 2/2/1 3/3/1
    /****
    ****/
    # 12 faces

    напомню что это

    Vertex[1] - > texture[1] -> normals[1] ; Vertex[2] - > texture[2] -> normals[2] ; Vertex[3] - > texture[3] -> normals[3] ;

    Сообщает редактору

    v -0.5000 0.0000 0.5000; vt 0.3393 0.6607 0.0000; vn 0.0000 -1.0000 -0.0000; v -0.5000 0.0000 -0.5000; vt 0.3393 0.3393 0.0000; vn 0.0000 -1.0000 -0.0000; и т.д

    Единственное у меня некоторые текстуры на кубе получаются расположены не в ту сторону как в 3D Max но больше они не плывут. Есть подозрение что из за того что треугольники строятся по часовой стрелке надо брать обратный отсчет face.
     
  3. x5reunion

    x5reunion Пользователь сайта

    С нами с:
    18.04.2014
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    Я полностью разобрался в чем была проблема и почему текстуры были перевернуты.

    Оказывается их надо приводить к отрицательным значениям тоесть если есть

    vt 0.3393 0.6607 0.0000 = 1 то будет vt -(0.3393) -(0.6607) -(0.0000) = 1

    Не знаю кто это придумал и зачем это нужно но факт.

    Всем спасибо кто хотябы прочитал эту тему.

    [​IMG]
     
  4. dsmok

    dsmok Пользователь сайта

    С нами с:
    12.09.2006
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    4
    Очень хорошо что разобрались!
    к сожалению поздно, но тем не менее:
    в МАХе пространственные координаты сделаны слегка через попу. тем кто сразу работает в максе - нормально, а вот остальным...
    Обычно ось Х это длина, У-высота а Z-глубина, Так вот в максе всё несколько иначе. В связи с чем возникают проблемы с импортом-экспортом...
     
Модераторы: Артер

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