Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 09.01.2013, 17:07   #1
infuzo
Нуждающийся
 
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений
(для 9 пользователей)
Материалы и Blitz3D. Вопрос по текстурированию.

Дело вот в чём. Пишу йоба игру в Blitz3D, где используются модели с материалами, то есть на модель накладываются много текстур. Если текстуры лежат вместе с моделью и правильно названы, то проблем нет, модель сама собою текстурируется. Но как самому прописовать текстуры для таких моделей я не понимаю. Можете мне скинуть или рассказать как текстурировать модели в формате 3ds в Blitz3d, на которые наложено несколько, а не одна, текстур.

Последний раз редактировалось Randomize, 09.01.2013 в 18:08. Причина: [-]...[/-]
(Offline)
 
Ответить с цитированием
Старый 09.01.2013, 19:17   #2
Program23
Бывалый
 
Аватар для Program23
 
Регистрация: 26.04.2009
Адрес: Россия, Уфа
Сообщений: 680
Написано 182 полезных сообщений
(для 406 пользователей)
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.

Режим смешивания EntityBlend?
EntityFX, посмотри тоже. А вообще, юзай pipline for 3ds max и там настраивай текстуры, а экспортируй в b3d format.
__________________
Фриланс:
Freelancer.com
Upwork
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
infuzo (09.01.2013)
Старый 09.01.2013, 20:04   #3
infuzo
Нуждающийся
 
Регистрация: 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
infuzo
Нуждающийся
 
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений
(для 9 пользователей)
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.

Может здесь нужно использовать PaintMesh или PaintEntity?
(Offline)
 
Ответить с цитированием
Старый 09.01.2013, 23:33   #5
FREE MAN
Разработчик
 
Регистрация: 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
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.

TextureBlend только ко второй применил. примени ко всем трем. ну хотябы к последним двум.
(Offline)
 
Ответить с цитированием
Старый 10.01.2013, 00:04   #7
infuzo
Нуждающийся
 
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений
(для 9 пользователей)
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.

Применял, результата никакого. В уроке от блитз скул (шестой, если не ошибаюсь), который предложил Phyton, демонстрирует только текстурирование, а не указание пути текстур по материалам для определённой модели. Вопрос остаётся в силе.
(Offline)
 
Ответить с цитированием
Старый 10.01.2013, 00:32   #8
FREE MAN
Разработчик
 
Регистрация: 20.02.2010
Сообщений: 397
Написано 173 полезных сообщений
(для 565 пользователей)
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.

выложи свой код, попытаюсь помочь...
(Offline)
 
Ответить с цитированием
Старый 10.01.2013, 00:40   #9
infuzo
Нуждающийся
 
Регистрация: 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
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
infuzo (28.01.2013)
Старый 24.01.2013, 00:51   #11
infuzo
Нуждающийся
 
Регистрация: 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
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Материалы и Blitz3D. Вопрос по текстурированию.

Сообщение от infuzo Посмотреть сообщение
Разве child = материал?
Нет, child это дочерний объект.

В этом коде идёт поиск дочерних объектов с именем "Wood", а когда найден, на него натягивается соответствующая текстура.

А PaintMesh это к кистям относится. Кисть это текстура со свойствами: блеск, прозрачность. цвет и т. д. В справке блица хорошо всё объясняется.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
infuzo (28.01.2013)
Старый 24.01.2013, 21:42   #13
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
infuzo (28.01.2013)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 20:48.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com