|
3D-программирование Вопросы, касающиеся программирования 3D мира |
09.01.2013, 17:07
|
#1
|
Нуждающийся
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений (для 9 пользователей)
|
Материалы и Blitz3D. Вопрос по текстурированию.
Дело вот в чём. Пишу йоба игру в Blitz3D, где используются модели с материалами, то есть на модель накладываются много текстур. Если текстуры лежат вместе с моделью и правильно названы, то проблем нет, модель сама собою текстурируется. Но как самому прописовать текстуры для таких моделей я не понимаю. Можете мне скинуть или рассказать как текстурировать модели в формате 3ds в Blitz3d, на которые наложено несколько, а не одна, текстур.
Последний раз редактировалось Randomize, 09.01.2013 в 18:08.
Причина: [-]...[/-]
|
(Offline)
|
|
09.01.2013, 19:17
|
#2
|
Бывалый
Регистрация: 26.04.2009
Адрес: Россия, Уфа
Сообщений: 680
Написано 182 полезных сообщений (для 406 пользователей)
|
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.
Режим смешивания EntityBlend?
EntityFX, посмотри тоже. А вообще, юзай pipline for 3ds max и там настраивай текстуры, а экспортируй в b3d format.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
09.01.2013, 20:04
|
#3
|
Нуждающийся
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений (для 9 пользователей)
|
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.
mesh = LoadMesh("dot.3ds")
tex1 = LoadTexture("Limeston.jpg")
tex2 = LoadTexture("metal.jpg")
tex3 = LoadTexture("wood_pla.jpg")
TextureBlend tex2,3
EntityTexture mesh, tex1,0,0
EntityTexture mesh, tex2,0,1
EntityTexture mesh, tex3,0,2
Сделал так, желаемого результата добиться не удалось. Видна только последняя текстура, что мне сделать?
Последний раз редактировалось infuzo, 09.01.2013 в 21:06.
|
(Offline)
|
|
09.01.2013, 22:43
|
#4
|
Нуждающийся
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений (для 9 пользователей)
|
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.
Может здесь нужно использовать PaintMesh или PaintEntity?
|
(Offline)
|
|
09.01.2013, 23:33
|
#5
|
Разработчик
Регистрация: 20.02.2010
Сообщений: 397
Написано 173 полезных сообщений (для 565 пользователей)
|
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.
Сообщение от infuzo
mesh = LoadMesh("dot.3ds")
tex1 = LoadTexture("Limeston.jpg")
tex2 = LoadTexture("metal.jpg")
tex3 = LoadTexture("wood_pla.jpg")
TextureBlend tex2,3
EntityTexture mesh, tex1,0,0
EntityTexture mesh, tex2,0,1
EntityTexture mesh, tex3,0,2
Сделал так, желаемого результата добиться не удалось. Видна только последняя текстура, что мне сделать?
|
Попробуй добавить TextureBlend к tex1 и tex3 должно срастись, со значениями сам разберёшся что и как.
простой пример в атаче прилагается как это можно реализовывать
Последний раз редактировалось FREE MAN, 04.03.2013 в 00:10.
|
(Offline)
|
|
09.01.2013, 23:36
|
#6
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.
TextureBlend только ко второй применил. примени ко всем трем. ну хотябы к последним двум.
|
(Offline)
|
|
10.01.2013, 00:04
|
#7
|
Нуждающийся
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений (для 9 пользователей)
|
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.
Применял, результата никакого. В уроке от блитз скул (шестой, если не ошибаюсь), который предложил Phyton, демонстрирует только текстурирование, а не указание пути текстур по материалам для определённой модели. Вопрос остаётся в силе.
|
(Offline)
|
|
10.01.2013, 00:32
|
#8
|
Разработчик
Регистрация: 20.02.2010
Сообщений: 397
Написано 173 полезных сообщений (для 565 пользователей)
|
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.
выложи свой код, попытаюсь помочь...
|
(Offline)
|
|
10.01.2013, 00:40
|
#9
|
Нуждающийся
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений (для 9 пользователей)
|
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
mesh = LoadMesh("school.3ds")
tex1 = LoadTexture("texture/Limeston.jpg")
tex2 = LoadTexture("texture/metal.jpg")
tex3 = LoadTexture("texture/wood_pla.jpg")
TextureBlend tex2,3
TextureBlend tex3,3
EntityTexture mesh, tex1,0,0
EntityTexture mesh, tex2,0,1
EntityTexture mesh, tex3,0,2
lit=CreateLight()
cam=CreateCamera()
While Not KeyHit(1)
HidePointer
varMouseY = varMouseY + (MouseYSpeed()/2)/2
If varMouseY >= 70 Then varMouseY = 70
If varMouseY <= -70 Then varMouseY = -70
If varMouseY = 0 Then varMouseY = 1
RotateEntity cam,varMouseY ,EntityYaw(cam) - (MouseXSpeed()/2)/2,1
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
If KeyDown(17) Then MoveEntity cam, 0,0,0.1
If KeyDown(31) Then MoveEntity cam, 0,0,-0.1
If KeyDown(30) Then MoveEntity cam, -0.1,0,0
If KeyDown(32) Then MoveEntity cam, 0.1,0,0
RenderWorld
Text 10,20, CountSurfaces(mesh)
Flip
Wend
|
(Offline)
|
|
14.01.2013, 13:22
|
#10
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.
Ну если логически:
У тебя есть модель школы, т.е. сложный объект. Есть несколько несовместимых материалов(дерево, железо).
Значит у тебя школа состоит из нескольких элементов.
Значит тебе надо в максе обозвать все деревяные элементы школы (например, Wood1,Wood2...) и в блитце текстурировать дочерние меши.
mesh = LoadMesh("school.3ds")
For i=1 to CountChildren(mesh)
meshChild=FindChild(mesh,("Wood"+i))
If meshChild<>0 then TextureEntity(meshChild, WoodTexture) ;а может быть здесь нужен PaintMesh
next
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.01.2013, 00:51
|
#11
|
Нуждающийся
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений (для 9 пользователей)
|
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.
Сообщение от burovalex
Ну если логически:
У тебя есть модель школы, т.е. сложный объект. Есть несколько несовместимых материалов(дерево, железо).
Значит у тебя школа состоит из нескольких элементов.
Значит тебе надо в максе обозвать все деревяные элементы школы (например, Wood1,Wood2...) и в блитце текстурировать дочерние меши.
mesh = LoadMesh("school.3ds")
For i=1 to CountChildren(mesh)
meshChild=FindChild(mesh,("Wood"+i))
If meshChild<>0 then TextureEntity(meshChild, WoodTexture) ;а может быть здесь нужен PaintMesh
next
|
Разве child = материал?
|
(Offline)
|
|
24.01.2013, 15:56
|
#12
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.
Сообщение от infuzo
Разве child = материал?
|
Нет, child это дочерний объект.
В этом коде идёт поиск дочерних объектов с именем "Wood", а когда найден, на него натягивается соответствующая текстура.
А PaintMesh это к кистям относится. Кисть это текстура со свойствами: блеск, прозрачность. цвет и т. д. В справке блица хорошо всё объясняется.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.01.2013, 21:42
|
#13
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.
Нужно:
перебрать чилды ентити
в чилдах перебрать сурфейсы
получить с сурфейсов браши по слоям
с брашей текстуры
For i=1 To CountChildren(model)
child=GetChild(model,i)
If child<>0
surf_=GetSurface(child,1)
brush_=GetSurfaceBrush(surf_)
texture_t=GetBrushTexture(brush_,0)
получить флаги, углы и бленды мем-хаком(чз длл)
it=Peek_L(texture_t)
If it<>0
inf=Peek_L(it+4)
flag_=Peek_W(inf+20)
blend=Peek_L(it+24)
scx#=Peek_F(it+36)
scy#=Peek_F(it+40)
posx#=Peek_F(it+44)
posy#=Peek_F(it+48)
angle#=Peek_F(it+52)
angle=180*angle/3.141559
получить имя файла текстуры
name$=TextureName$(texture_t)
загрузить текстуры с полученными флагами
наложить текстуры на браши с полученным блендом
BrushTexture brush_,texture_,0,0
или
не морочить яйца и ложить текстуры с моделью
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:35.
|