Здравствуйте, гость ( Вход | Регистрация )

Свернуть

Новости

Форум Лучшее из галереи Уроки и статьи
07.12.2015 Выставочный зал: кошарик - персональная выставка
31.08.2015 Интересные ссылки для рисовальщиков
21.01.2015 Выставочный зал 2: Игрушки Олеси Гавриленко

27.12.2014 Выставочный зал: кошарик - персональная выставка
17.11.2014 Дуэль "Рыбки" - победитель Лисичка
05.11.2014 Конкурс иллюстраций "Снежная королева", до 31 января
30.10.2014 Дуэль "Рыбки" до 16 ноября
14.07.2014 Мастер-класс Мини-мишка в технике фелтинга
26.05.2013 Ау! Мы ищем таланты! – приглашаем модераторов!
«Глубокая заморозка»
tn_gallery_3_3_84725.jpg
Дуэль «Глубокая заморозка»
© loris
06.01.2016 Виртуальный Музей: Русский живописец Василий Дмитриевич Поленов
28.12.2015 Виртуальный Музей: Нидерландский живописец Квентин Массейс
16.12.2015 Виртуальный Музей: Итальянский живописец Франче́ско Айец
17.11.2015 Виртуальный Музей: Луи Анкетен (Louis Anquetin)
11.11.2015 Виртуальный Музей: Русский живописец Алексей Иванович Корзухин
Файловый архив
06.09.2013 Прочее: Файлы к уроку "Чайная церемония"
05.09.2013 Журнал Art Tower: ArtTower Magazine #8
16.05.2013 Adobe Photoshop: Кисти: Reid Southen brush
16.05.2013 Adobe Photoshop: Кисти: Goro Fujita brush
16.05.2013 Adobe Photoshop: Кисти: Кисти для рисования в Photoshop
Блоги Новости в цифровом мире и мире дизайна
02.12.2014 Дама с каменьями: Вести с крыши 2
08.11.2014 Timenews: Вассерман: прежняя модель мировой экономики исчерпала себя
06.11.2014 Дама с каменьями: Приятные вести с крыши))) от Гаргула)
02.11.2014 Spell: Книги Дж. Кэмерон
22.10.2014 Vjaz: от ФУ до МА
25.11.2015 Комментарий от Foxx в Costa Rica Adventure Divers, Логотип для компании и рисунок на майку (maria_mer)
18.11.2015 Комментарий от maria_mer в Spellforce - майка, для фанов игры (maria_mer)
18.11.2015 Комментарий от maria_mer в Белая книга. Целитель - любительский прект (maria_mer)
09.04.2015 Комментарий от Romana в Книги Дж. Кэмерон (Spell)
08.04.2015 Комментарий от Romana в Я решил вернуться... (Элбирет)
16.03.2015 ФОТОФОРУМ-2015
01.01.2015 ARQUTE.com и ArtTalk.ru закрываются
19.01.2017 Конкурс дизайна логотипов
26.12.2016 ру/Ководство: О творческом развитии
14.10.2016 ру/Ководство: Разнообразие

 
Добавить ответ в эту темуОткрыть тему
> Мультиматериал на одном объекте и его текстурирование
V
GameDragon
сообщение 16.03.2007 - 14:39
Сообщение #1


Проживающий
***


Группа: Почетные граждане
Сообщений: 300
Регистрация: 15.03.2007
Из: Киев
Пользователь №: 3107
Блог


Симпатии:  20  


Значит. так....
Есть исходная модель - цельный Editable Poly








Создаем в редакторе материалов Multi/Sub-Object материал









Назначаем материал нашей модели.
Переходим на уровень редактирования полигонов(Polygons) и
выбираем нужные нам полики и назначаем номер материала (Polygon Properties: Material- Set ID smile.gif
Для наглядности я назначил всем материалам разные цвета.













А теперь настраиваете материалы так как вам это будет угодно...
Получили примерно такое:






То что произошло с верхней частью модели вполне нормальное явление, и название этому явлению - отсутствие текстурных координат. о них мы поговорим позже.

Есть несколько путей решения этого:
1-проще с точки зрения применения модификаторов это использование UVW MAP
2-второй тяжелее и требует некоторого знания и умения мапить модель Unwrap UVW
= давайте сразу оговоримся- "мапить"- это наложение текстурных координат на модель
"текстуринг"- это создание самой текстуры (изображения) для материала (он же шейдер)

Мы для начала выберем метод №1
но есть маленькая хитрость, если положить этот модификатор на всю модель целиком, то при использовании нескольких текстур на модели , мы получим правильный мапинг только для одной текстуры. а нам надо для всех.
для этого мы опять переходим на уровень редактирования полигонов и выбираем полигоны а которых назначена одна и та же текстура....например там где кирпичики и не выходя из режима полигонов назначаем модификатор UVW MAP






Вид стека должен быть как на рисунке.
Дальше настраиваем модификатор так, что бы нас удовлетворял вид текстуры
советую для объемных частей использовать метод BOX

Но это была только первая текстура...а как же быть со второй?
а очень просто: поверх мы накладываем еще один модификатор Poly Select
там опять переходим на режим работы с полигонами и выбираем те грани на которых лежит другая текстура (то есть с другим номером материала) и не выходя из этого режима накладываем знакомый уже нам модификатор UVW MAP
приводим к нужному нам виду.
стек будет выглядеть вот так:





В итоге всех манипуляций получаем :








Вот вроде бы и все. за кадром конечно осталось несколько хитростей, например выделять грани с уже назначенными номерами не вручную а автоматом: Select by ID
плохо в описанном методе только то что если материалов у вас будет много то и стек будет просто огромным... а это сильно будет тормозить машину. (информация о всех модификаторах хранится в стеке.
Поэтому второй способ более экономичнее, но и более технологичнее (то есть сложнее в изучении)

На сим раскланяюсь.
Пишите ,спрашивайте, что будет не понято объясню.


----------------------------------------------------------------------------------------------------------------------------------------------------------
Автором урока является GameDragon.
Запрещается копирование и публикация урока на других сайтах без письменного согласия автора и размещения ссылок.

The tutorial is written GameDragon.
No part of this tutorial can be copied/pasted on any other website without the author's express written permission.




Сообщение отредактировал ndm - 17.01.2008 - 13:02


--------------------
Расскажи мне, и я забуду, покажи мне, и я запомню, вовлеки меня и я пойму.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kushelev
сообщение 27.04.2011 - 19:01
Сообщение #2






Группа: Туристы
Сообщений: 1
Регистрация: 27.04.2011
Пользователь №: 18183



Симпатии:  0  


Цитата(GameDragon @ 16.03.2007 - 14:25) *
Пишите ,спрашивайте, что будет не понято объясню.


Кушелев: А Вы не могли бы подсказать, как назначить мультиматериал средствами MaxScript?

Проблема заключается в том, что при аттаче нескольких объектов информация о цвете (wirecolor) теряется, и объект получается одноцветным.

Что нужно добавить в скрипте, чтобы сохранить цвета после аттача?



"Обесцвеченная модель":


Оригинал: http://img-fotki.yandex.ru/get/5704/nanowo...f7a422_orig.png

Скрипт:

p = #(); p1 = #(); p2 = #(); aa = #(); ax = #(); ay = #(); r = #(); nuclcol = #(); gp = #(); gn = #(); gg = #()
-- adenosine, cytosine, guanine, timidine, uracil, inosine, pseudouracil, dihydrouracil, methyl inosine, x-circles maximum, w-methyl-2-guanine, v-methyl-1-guanine
nucl = #("a","c","g","t","u","i","p","d","m","x","w","v")
nuclcolor = #([200,0,0],[200,100,100],[0,200,200],[0,0,200],[100,0,200],[200,0,200],[150,0,0
],[100,50,0],[0,80,50],[100,100,100])
--*****************************************************************************
seq = #("a","c","c","a","c","c","u","g","c","u","c","a","g","g","c","c","u","u","a","g","c","p","t","g","g","c","c"
,"u","c","d","g","g","a","g","a","g","g","g","p","m","c","g","i","u","u","c","c","c","u","c","w"
,"c","g","c","g","a","d","g","g","c","d","g","a","u","g","c","g","v","u","g","u","g","c","g","g","g")
--*****************************************************************************
-- turn
anglecomp1 = #(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,0, 60, 120, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
)
anglecomp2 = #(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,-120,-120, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
)
--*****************************************************************************
px = #(4.2,-4.2,4.2,-4.2,-4.2,4.2,-4.2,4.2); py = #(-4.2,-4.2,4.2,4.2,4.2,4.2,-4.2,-4.2); pz = #(4.2,4.2,4.2,4.2,-4.2,-4.2,-4.2,-4.2)
pa = #(35.27,35.27,-35.27,-35.27,35.27,35.27,-35.27,-35.27); pb = #(45,-45,45,-45,45,-45,45,-45)
-- PH2
pindex = #(1,0,0,1,0,1,1,0, 0,0,0,0,0,0,0,0, 1,1,1,1,1,0,1,1, 0,1,1,1,1,1,1,1, 1,1,1,0,1,0,1,1, 1,0,1,1,0,1,1,1)
pindex2 = #(1,0,0,1,0,1,1,0, 0,0,0,0,0,0,0,0, 1,1,1,1,1,0,1,1, 0,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0)
trnk = torus radius1:0.1 radius2:0.04 segs:3 sides:3 position: [0,0,0] wirecolor:[200,200,200]
select #(trnk); macros.run "Modifier stack" "convert_to_Mesh"
for k = 18 to 22 do(
for ll = 1 to 8 do(if pindex[ll] > 0 then (p[ll] = torus radius1:4.8 radius2:0.4 segs:20 sides:12 position: [px[ll],py[ll],pz[ll]] wirecolor:[0,200,0]
rotate p[ll] pa[ll] [1,0,0]; rotate p[ll] pb[ll] [0,1,0])); g0 = group #(p[01],p[04],p[06],p[07])
for ll = 17 to 24 do(if pindex[ll] > 0 then (p[ll] = torus radius1:4.8 radius2:0.4 segs:20 sides:12 position: [px[ll-16],py[ll-16],pz[ll-16]] wirecolor:[0,200,0]
rotate p[ll] pa[ll-16] [1,0,0]; rotate p[ll] pb[ll-16] [0,1,0])); g2 = group #(p[17],p[18],p[19],p[20],p[21],p[23],p[24])
rotate g2 60 [-1,-1,1]; move g2 [-8.4,-8.4,8.4]
for ll = 25 to 32 do(if pindex[ll] > 0 then (p[ll] = torus radius1:4.8 radius2:0.4 segs:20 sides:12 position: [px[ll-24],py[ll-24],pz[ll-24]] wirecolor:[0,200,0]
rotate p[ll] pa[ll-24] [1,0,0]; rotate p[ll] pb[ll-24] [0,1,0])); g3 = group #(p[26],p[27],p[28],p[29],p[30],p[31],p[32])
rotate g3 60 [-1,1,-1]; move g3 [-8.4,8.4,-8.4]; g6 = group #(g0,g2,g3); g6.pivot = [0,0,0]
rotate g6 -45 [0,0,1]; rotate g6 -15.5 [1,0,0]; move g6 [-37.5,-9.5,11.5]; ungroup g6; ungroup g3; ungroup g2; ungroup g0
select #(p[01],p[04],p[06],p[07],p[17],p[18],p[19],p[20],p[21],p[23],p[24],p[26],p[27],
p[28],p[29],p[30],p[31],p[32])
macros.run "Modifier stack" "convert_to_Mesh"; element2 = copy p[1] wirecolor: [0,200,0]
for ll = 2 to 32 do(if pindex2[ll] > 0 then (attach element2 p[ll])); delete p[1]
-- rybose
x = #(6,-6,0,0,0,0,15,-15,23.5,-23.5,25,-25,20,-20,19,-19,19,-19,22.5,-22.5,22.5,-22.5,10,-10,10,-10,15.5,-15.5,15.5,-15.5,0,6,-6,0,-5.5,5.5,0,-23.7,-16.5,-26
,-23.5,-18,-15.5,-26,-29.53,-31.51,-21.611,-23.59,-21.611,-19.631,-29.53,-27.55,-43.389,-43.39,-37.45,-37.45,-31.51,-31.51,-37.45,-37.45)
y = #(-58,-58,-58,-58,-49,-49,-55,-55,-47,-47,-37.5,-37.5,-26.5,-26.5,-50.5,-50.5,-50.5,-50.5,-32,-32,-32,-32,-47,-47,-47,-47,-38.5,-38.5,-38.5,-38.5,-55,-63
,-63,-69,-60.5,-60.5,-66,-55.7,-48,-58,-48,-58,-56,-50,-28.049,-26.864,-25.754,-24.57,-32.563,-33.747,-34.857,-36.042,-26.864,-19.981,-23.46,-16.576,-19.981
,-26.864,-23.385,-30.268)
z = #(0,0,6,-6,7,-7,0,0,0,0,0,0,0,0,6,6,-6,-6,6,6,-6,-6,7,7,-7,-7,7,7,-7,-7,-13.5,-8.5,-8.5,-10.5,-16,-16,-18,-17.5,-13,-10,-15.5,-8,-15.5,-8,17.242,9.165
,15.637,7.56,5.902,13.98,7.507,15.584,9.165,4.35,14.032,9.217,4.35,9.165,-0.517,4.297)
a = #(90,90,30,-30,-20,20,90,90,90,90,90,90,90,90,30,30,-30,-30,30,30,-30,-30,-20,-20,20,20,-20,-20,20,20,75,50,50,75,50,50,-30,-30,80,80,60,60,60,60,40,70
,-55,55,40,70,-55,55,71.5,71.5,0,-71.5,71.5,71.5,0,-71.5)
b = #(45,-45,0,0,0,0,-5,5,95,-95,65,-65,-15,15,45,-45,45,-45,120,-120,120,-120,30,-30,30,-30,90,-90,90,-90,0,75,-75,0,75,-75,0,-45,-45,-45,30,30,235,235,-120
,60,-40,-18,-120,60,-40,-18,-60,60,0,0,-60,60,0,0)
ri = #(1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,0,1,0,1,1)
for l = 1 to 60 do(
if ri[l] > 0 then (r[l] = torus radius1:4.8 radius2:0.4 segs:20 sides:12 position: [x[l],y[l],z[l]] wirecolor: [200,200,0]
rotate r[l] a[l] [1,0,0]
rotate r[l] b[l] [0,0,1]
))
select #(r[1],r[2],r[3],r[5],r[6],r[7],r[8],r[9],r[10],r[11],r[12],r[13],r[14],r[15],r[
16],r[17],r[19]
,r[21],r[22],r[23],r[24],r[25],r[26],r[27],r[28],r[29],r[30],r[31],r[32],r[33],r
[34],r[35],r[36],r[37],r[38],r[39]
,r[41],r[42],r[43],r[44],r[45],r[47],r[48],r[50],r[51],r[52],r[53],r[54],r[55],r
[57],r[59],r[60])
macros.run "Modifier stack" "convert_to_Mesh"
element1 = copy r[1] wirecolor: [200,200,0]
for ll = 2 to 60 do(if ri[ll] > 0 then (attach element1 r[ll]))
delete r[1]
-- adenosine, cytosine, guanine, timidine, uracil, inosine, pseudouracil, dihydrouracil, methyl inosine, x-circles maximum, w-methyl-2-guanine, v-methyl-1-guanine
if (seq[k] == nucl[10]) then (ai = #(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); axi = #(1,1,1,1,1,1,1,1); ayi = #(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); nuclcol = nuclcolor[10])
if (seq[k] == nucl[1]) then (ai = #(0,0,0,1,1,1,1,1,1,1,1,1,0,1,0); axi = #(0,0,1,1,0,0,0,0); ayi = #(0,1,0,0,0,0,0,0,0,1,0,1,0,1,0); nuclcol = nuclcolor[1])
if (seq[k] == nucl[2]) then (ai = #(0,0,0,1,1,1,1,1,1,1,0,1,0,0,0); axi = #(0,0,1,1,0,0,0,0); ayi = #(0,1,0,0,0,0,0,1,0,1,0,1,0,0,0); nuclcol = nuclcolor[2])
if (seq[k] == nucl[3]) then (ai = #(0,1,0,1,1,1,1,1,1,1,1,1,0,1,0); axi = #(0,0,1,1,0,0,0,0); ayi = #(0,0,0,0,0,0,0,0,0,1,0,1,0,1,0); nuclcol = nuclcolor[3])
if (seq[k] == nucl[4]) then (ai = #(0,0,0,1,1,1,1,1,1,1,0,1,0,0,0); axi = #(0,0,1,1,0,0,0,0); ayi = #(0,1,0,0,0,0,0,1,0,1,0,1,0,0,0); nuclcol = nuclcolor[4])
if (seq[k] == nucl[5]) then (ai = #(0,0,0,1,1,1,1,1,1,1,0,1,0,0,0); axi = #(0,0,1,1,0,0,0,0); ayi = #(0,1,0,0,0,0,0,1,0,1,0,1,0,0,0); nuclcol = nuclcolor[5])
if (seq[k] == nucl[6]) then (ai = #(0,0,0,1,1,1,1,1,1,1,1,1,0,1,0); axi = #(0,0,1,1,0,0,0,0); ayi = #(0,1,0,0,0,0,0,0,0,1,0,1,0,1,0); nuclcol = nuclcolor[6])
if (seq[k] == nucl[7]) then (ai = #(0,0,0,1,1,1,1,1,1,1,0,1,0,0,0); axi = #(0,0,1,1,0,0,0,0); ayi = #(0,1,0,0,0,0,0,1,0,1,0,1,0,0,0); nuclcol = nuclcolor[7])
if (seq[k] == nucl[8]) then (ai = #(0,0,0,1,1,1,1,1,1,1,0,1,0,0,0); axi = #(0,0,1,1,0,0,0,0); ayi = #(0,1,0,0,0,0,0,1,0,1,0,1,0,0,0); nuclcol = nuclcolor[8])
if (seq[k] == nucl[9]) then (ai = #(0,0,0,1,1,1,1,1,1,1,1,1,0,1,0); axi = #(0,0,1,1,0,0,0,0); ayi = #(0,1,0,0,0,0,0,0,0,1,0,1,0,1,0); nuclcol = nuclcolor[9])
--
element0 = torus radius1:0.1 radius2:0.05 segs:3 sides:3 position:[0,0,0] wirecolor: nuclcol
select #(element0); macros.run "Modifier stack" "convert_to_Mesh"
for i = 1 to 3 do for j = 1 to 5 do (n = i + 3*(j-1)
if ai[n] > 0 then (aa[n] = torus radius1:4.8 radius2:0.4 segs:20 sides:12 position:[10*(i-2),10*(j-5),10*0.5] wirecolor: nuclcol
aa[n+12]=copy aa[n] wirecolor: nuclcol; move aa[n] [0,0,-10]; select #(aa[n],aa[n+12]); macros.run "Modifier stack" "convert_to_Mesh"
attach element0 aa[n];attach element0 aa[n+12]))
for i = 1 to 2 do for j = 1 to 4 do (m = i + 2*(j-1)
if axi[m] > 0 then (ax[m] = torus radius1:4.8 radius2:0.4 segs:20 sides:12 position:[10*(3*(i-1.5)),10*(j-4),0] wirecolor: nuclcol
rotate ax[m] 90 [0,1,0]; select #(ax[m]); macros.run "Modifier stack" "convert_to_Mesh"
attach element0 ax[m]))
for i = 1 to 3 do for j = 1 to 5 do (m = i + 3*(j-1)
if ayi[m] > 0 then (ay[m] = torus radius1:4.8 radius2:0.4 segs:20 sides:12 position:[10*(i-2),10*(j-4.5),0] wirecolor: nuclcol
rotate ay[m] 90 [1,0,0]; select #(ay[m]); macros.run "Modifier stack" "convert_to_Mesh"
attach element0 ay[m]))
-- first vector
gr1 = group #(element0, element1,trnk)
gr1.pivot = [-37.451, -2.887, 14.138]
rotate gr1 anglecomp1[k] [0, -27.384, -9.84]
ungroup gr1
-- second vector
gr2 = #(element0, element1, element2,trnk)
gr2.pivot = [-43.391, -10.855, 7.631]
rotate gr2 anglecomp2[k] [-11.880, -2.245, -8.094]
ungroup gr2
-- translation vector
attach trnk element0
attach trnk element1
attach trnk element2
move trnk [5.511 ,-49.39, -25.725]
trnk.pivot = [-26, -58, -10]
-- translation angles
rotate trnk 50 [0, 1, 0]
rotate trnk 35 [0, 0, 1])
animate on
(
at time 0 (rotate trnk 00 [0, 0, 1])
at time 50 (rotate trnk -35 [0, 0, 1])
at time 100 (rotate trnk 35 [0, 0, 1])
)

Комментарии к скрипту:


Оригинал: http://img-fotki.yandex.ru/get/5005/nanowo...f4b8b4_orig.png

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

С уважением,
Александр Кушелев, руководитель лаборатории Наномир.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Быстрый ответДобавить ответ в эту темуОткрыть тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия форума Сейчас: 23.10.2017 - 13:00