Mesh.uv и класс Mesh

Импорт текстур, моделей, звуков и пр.

Mesh.uv и класс Mesh

Сообщение Zaicheg 07 дек 2009, 19:30

Как unity задаёт порядок элементов в mesh.uv?
Если формулировать вопрос иначе, то как мне из .obj перенести информацию об uvs в меш unity?
Я смотрел примеры, справку и прочее. Но всё ещё нуждаюсь в разъяснениях.

Вот лог для куба, созданного в unity:
Код: Выделить всё
Verticles: 24

(0.5, -0.5, 0.5)
(-0.5, -0.5, 0.5)
(0.5, 0.5, 0.5)
(-0.5, 0.5, 0.5)
(0.5, 0.5, -0.5)
(-0.5, 0.5, -0.5)
(0.5, -0.5, -0.5)
(-0.5, -0.5, -0.5)

(0.5, 0.5, 0.5)
(-0.5, 0.5, 0.5)
(0.5, 0.5, -0.5)
(-0.5, 0.5, -0.5)
(0.5, -0.5, -0.5)
(-0.5, -0.5, 0.5)
(-0.5, -0.5, -0.5)
(0.5, -0.5, 0.5)

(-0.5, -0.5, 0.5)
(-0.5, 0.5, -0.5)
(-0.5, -0.5, -0.5)
(-0.5, 0.5, 0.5)
(0.5, -0.5, -0.5)
(0.5, 0.5, 0.5)
(0.5, -0.5, 0.5)
(0.5, 0.5, -0.5)


UVs: 24

(0.0, 0.0)
(1.0, 0.0)
(0.0, 1.0)
(1.0, 1.0)
(0.0, 1.0)
(1.0, 1.0)
(0.0, 1.0)
(1.0, 1.0)
(0.0, 0.0)
(1.0, 0.0)
(0.0, 0.0)
(1.0, 0.0)
(0.0, 0.0)
(1.0, 1.0)
(1.0, 0.0)
(0.0, 1.0)
(0.0, 0.0)
(1.0, 1.0)
(1.0, 0.0)
(0.0, 1.0)
(0.0, 0.0)
(1.0, 1.0)
(1.0, 0.0)
(0.0, 1.0)


Trinagles: 36

1
0
3

3
0
2

9
8
5

5
8
4

11
10
7

7
10
6

14
12
13

13
12
15

18
16
17

17
16
19

22
20
21

21
20
23


Вот простейший куб в .obj из 3dsmax без информации о нормалях (только vertices и uvs). То есть, f v/vt
Код: Выделить всё
# 3ds Max Wavefront OBJ Exporter v0,97b - (c)2007 guruware
# File Created: 07,12,2009 17:18:34

mtllib cube.mtl

#
# object Box01
#

v -0,1969 0,0000 0,1969
v 0,1969 0,0000 0,1969
v -0,1969 0,0000 -0,1969
v 0,1969 0,0000 -0,1969
v -0,1969 0,3937 0,1969
v 0,1969 0,3937 0,1969
v -0,1969 0,3937 -0,1969
v 0,1969 0,3937 -0,1969
# 8 vertices

vt 0,0000 0,0000 0,0000
vt 1,0000 0,0000 0,0000
vt 0,0000 1,0000 0,0000
vt 1,0000 1,0000 0,0000
vt 0,0000 0,0000 0,0000
vt 1,0000 0,0000 0,0000
vt 0,0000 1,0000 0,0000
vt 1,0000 1,0000 0,0000
vt 0,0000 0,0000 0,0000
vt 1,0000 0,0000 0,0000
vt 0,0000 1,0000 0,0000
vt 1,0000 1,0000 0,0000
# 12 texture coords

g Box01
usemtl 01___Default
f 1/10 3/12 4/11
f 4/11 2/9 1/10
f 5/9 6/10 8/12
f 8/12 7/11 5/9
f 1/5 2/6 6/8
f 6/8 5/7 1/5
f 2/1 4/2 8/4
f 8/4 6/3 2/1
f 4/5 3/6 7/8
f 7/8 8/7 4/5
f 3/1 1/2 5/4
f 5/4 7/3 3/1
# 12 faces
Последний раз редактировалось Zaicheg 07 дек 2009, 21:20, всего редактировалось 1 раз.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Mesh.uv и класс Mesh

Сообщение gnoblin 07 дек 2009, 20:57

vt: третий компонент тебе тут не нужен.

UVW-координаты... W-зарезервирована для использования будущего использования. Тебе нужны только U и V.
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Mesh.uv и класс Mesh

Сообщение Zaicheg 07 дек 2009, 21:01

Это понятно. Просто выложил листинг «как есть».
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Mesh.uv и класс Mesh

Сообщение Zaicheg 11 дек 2009, 14:14

Четыре дня мучался, но результата не получил. Учитывая, что сроки поджимают, обращаюсь за помощью снова. Начать придётся с самого начала, так как наработки очень сумбурные и противоречивые.

Задача: импортировать .obj в unity indie в рантайме.

К сообщению прикрепляю архив со вспомогательными файлами. Список:
1. cube.obj
Куб, экспортированный из 3ds max. Ось Y вверху. Без групп сглаживания.
2. sphere.obj
Сфера, экспортированная из 3ds max.
3. stryker.obj
Более сложная модель, взятая со стороны. Для тестов.
4. cube_Export.obj
Куб, экспортированный из unity посредством этого скрипта.
5. Cube_NativeImport_Log.txt
Листинг элементов куба cube.obj, импортированного в unity нативными средствами.

Дополнительные ссылки:
1. Скрипт для экспорта в .obj
2. Импорт-экспорт посредством собственного бинарного формата, напоминающего .obj
3. Референс формата .obj
4. Статья «Загрузка моделей формата .obj»

Вопросы:
1. Вертексы и их индексы в трианглах меняют свой порядок при импорте в unity. То есть, полигон №1 с индексами "1 3 2" может быть записан как полигон №5 с индексами "4 5 2" (но индексы будут указывать на вертексы с теми же координатами). Это необходимо реализовывать или это просто прихоть unity-импортёра?
2. Вертексы, текстурные координаты и нормали дублируются при импорте. То есть, если было 8 вертексов, то становится 24, если было 12 uvs, то становится 24. При дублировании порядок следования элементов в блоке можно сохранять или необходимо менять в соответствии с какими-то требованиями?
3. Если не импортировать нормали, то они считаются автоматически через RecalculateNormals(). Это допустимо или всё же необходимо импортировать нормали из .obj?
4. Как в unity позиционируются текстурные координаты? Насколько я понимаю, для триангла с индексами вертексов "1 0 2" будут взяты текстурные координаты uv[1, 0, 2]. То есть, надо взять исходный фейс "1/10 0/5 2/6" и расположить uvs № 10, 5, 6 в импортированном меше под норерами 1, 0, 2. Или как-то иначе?
5. Как вообще всё это сделать? Вообще любые мысли, советы, вопросы.

Я очень стараюсь, я читаю, пробую, работаю. Но не получается. К тому же, от постоянной работы над одной задачей в голове всё перепуталось.
Помятуя о том, что в чате данная задача позиционировалась как плёвая, надеюсь на помощь.
У вас нет доступа для просмотра вложений в этом сообщении.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Mesh.uv и класс Mesh

Сообщение Neodrop 11 дек 2009, 15:02

А для чего вообще весь этот гимор на твою голову?
Я бы, в первую очередь изучил Mesh Serializer2 с WIKI - там всё, что ты тут ловишь, уже давно реализовано.

И главное - на кой ляд это всё нужно ? :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Mesh.uv и класс Mesh

Сообщение Tolking 11 дек 2009, 16:38

2. Вертексы, текстурные координаты и нормали дублируются при импорте. То есть, если было 8 вертексов, то становится 24, если было 12 uvs, то становится 24. При дублировании порядок следования элементов в блоке можно сохранять или необходимо менять в соответствии с какими-то требованиями?

:) Обати внимание вертексы утраиваются, УВ удваиваются, и кол-во вертексов становится равно колву УВ. Но происходит это не при импорте, а при экспорте! В редакторе у куба 8 углов, в зависимости от развертки у модели может быть от 8 до 36 вертексов, и УВ, соответственно, может быть от 8 до 36.

3. Если не импортировать нормали, то они считаются автоматически через RecalculateNormals(). Это допустимо или всё же необходимо импортировать нормали из .obj?

Если нормали ненормальные, то импортировать.

4. Как в unity позиционируются текстурные координаты? Насколько я понимаю, для триангла с индексами вертексов "1 0 2" будут взяты текстурные координаты uv[1, 0, 2]. То есть, надо взять исходный фейс "1/10 0/5 2/6" и расположить uvs № 10, 5, 6 в импортированном меше под норерами 1, 0, 2. Или как-то иначе?

Ты паришься. Чего там думать? Грузить нужно!

5. Как вообще всё это сделать? Вообще любые мысли, советы, вопросы.
Я очень стараюсь, я читаю, пробую, работаю. Но не получается. К тому же, от постоянной работы над одной задачей в голове всё перепуталось.

Именно что перепуталось! Перепиши все нафиг! Загрузка модели из файла - это как раз та задача, где думать ненужно, нужно трясти.
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Mesh.uv и класс Mesh

Сообщение Zaicheg 11 дек 2009, 16:48

Обати внимание вертексы утраиваются, УВ удваиваются, и кол-во вертексов становится равно колву УВ. Но происходит это не при импорте, а при экспорте!

Это происходит при импорте в unity.
Ты паришься. Чего там думать? Грузить нужно!

Замечательно. Но если грузить один к одному — результат некорректный. Если грузить как я написал — результат большей частью некорректный. Хотя тут дело может быть в стадии дублирования вертексов и uv.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Mesh.uv и класс Mesh

Сообщение Tolking 11 дек 2009, 19:04

Т.е. в файле 8 вертексов? Ты проверил?
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Mesh.uv и класс Mesh

Сообщение Zaicheg 12 дек 2009, 09:21

Tolking писал(а):Т.е. в файле 8 вертексов? Ты проверил?

Да, проверил. 8 вертексов, 36 нормалей, 12 текстурных координат и 12 фейсов.
Я же прикрепил архив с файлами. Там и экспортированный из 3ds max .obj есть.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Сообщение Zaicheg 12 дек 2009, 11:40

Набросал проект для импорта пока одних вертексов. Скрипты комментированы.
Посмотрите, пожалуйста, и скажите, что по-вашему там неправильно.
После этого перейдём к UVs.

obj-файлы лежат в папке Files. Или же можно взять их из предыдущего прикреплённого архива в этой теме.
Путь к obj-файлу прописывается в InUnity.cs в переменной path.

Скрипт ReadOBJ.cs — считывание информации, запись в массивы.
Скрипт InUnity.cs — запись информации, полученной из ReadOBJ, в меш. Назначение клавиш. Метод для вывода листинга элементов объекта.
Скрипт Testing.cs будучи наброшенным на меш, выдаёт в виде публичных переменных все его элементы.

Импорт производится по нажатию "k".
Листинг элементов выдаётся по нажатию "l". Объект для листинга задаётся в методе MeshInfo() скриптаInUnity.
Вращение импортированного меша производится по нажатию клавиш WASD.

Объект, в котором хранится импортированный меш — Import. На него по умолчанию наброшен материал.

Комментируйте, пока мы все полимеры не просрали.
У вас нет доступа для просмотра вложений в этом сообщении.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Mesh.uv и класс Mesh

Сообщение Zaicheg 26 дек 2009, 12:21

1. Как в Unity реализуются группы сглаживания? При импорте в частнотсти.
2. Что такое тангентсы (mesh.tangents)? Ну и как их рассчитывать
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Mesh.uv и класс Mesh

Сообщение Tolking 26 дек 2009, 12:40

1) Группа сглаживания это способ калькуляции нормалей. В Юнити такого нет, скорее всего. Это фича редактора моделей. Как вариант делать 2 меша в одном нормали ставить общие для вертекса, а для другого перпендикулярно поверхности полигона, в который вертекс входит...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Mesh.uv и класс Mesh

Сообщение Neodrop 26 дек 2009, 12:43

Tolking, а глаза разуть, прежде чем народ путать? :-?

Изображение
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Mesh.uv и класс Mesh

Сообщение Tolking 26 дек 2009, 12:47

:)А носом ткнуть?

ЗЫ Сейчас как раз пытаюсь сделать квад(плашку) изучаю Mesh. В нем ничего похожего нет...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Mesh.uv и класс Mesh

Сообщение Neodrop 26 дек 2009, 12:52

В классе да. Но ты же не собираешься кодом строить девочек из Perfect World ? Это фишка Импортёра.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

След.

Вернуться в Медиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1