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

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

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

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

Ответ
 
Опции темы
Старый 02.11.2009, 04:31   #1
HorNeS
Оператор ЭВМ
 
Регистрация: 14.01.2006
Сообщений: 25
Написано 0 полезных сообщений
(для 0 пользователей)
Работа с материалами

Всем привет, появился такой, вроде бы простой, но для меня сложный вопрос.
Решил заняться созданием нормальной системы материалов. Попробовал вот написать для теста распознавание пикнутой текстуры, опираясь на то что знаю (а я знаю я немного ), но не получилось.
Скорее всего я где-то туплю (причем очень конкретно), но не могу понять где.
Имеем: один единый меш с разными наложенными на него текстурами.
Нужно: при "пикании" на меш узнавать на какую из наложенных текстур на меше мы попали.
Не получается: при "пикании" в любую часть меша выводится имя только одной текстуры (предположительно, самой последней из списка).

Семпл в аттаче, заранее спасибо.
Вложения
Тип файла: rar materials.rar (12.9 Кб, 497 просмотров)
(Offline)
 
Ответить с цитированием
Старый 03.11.2009, 16:13   #2
HorNeS
Оператор ЭВМ
 
Регистрация: 14.01.2006
Сообщений: 25
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Работа с материалами

Ау, ни у кого идей нету?
(Offline)
 
Ответить с цитированием
Старый 03.11.2009, 16:15   #3
Артем Валерьевич
Бывалый
 
Аватар для Артем Валерьевич
 
Регистрация: 25.12.2007
Адрес: г. Краснодар
Сообщений: 894
Написано 421 полезных сообщений
(для 1,079 пользователей)
Ответ: Работа с материалами

Разбирал, ковырял, пока непридумал.
(Offline)
 
Ответить с цитированием
Старый 03.11.2009, 16:40   #4
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Работа с материалами

используй логику, при пикании получаем номер пикнутой поверхности, для этого не нужно перебирать и записывать все в тип. Юзай справку по команде PickedSurface(), а так то вот :
;graphics init==============
Graphics3D 800, 600, 32, 2
SetBuffer BackBuffer()
camera = CreateCamera()
AmbientLight 255, 255, 255
;testmesh loading==========
testl = LoadMesh( "map.b3d" )
    PositionEntity testl, 0, 0, 10
    EntityPickMode testl, 2
;======================
While Not KeyHit(1)
;texture detection==========
playerf_pick = CameraPick( camera, MouseX(), MouseY() )
If playerf_pick = testl Then
    surface = PickedSurface()
    brush = GetSurfaceBrush( surface )
    material = GetBrushTexture( brush )
    currtex$ = TextureName$( material )
EndIf
;======================
UpdateWorld
RenderWorld

Text 10, 300, currtex$
;======================
Flip
Wend
End
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HorNeS (03.11.2009)
Старый 03.11.2009, 16:43   #5
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Работа с материалами

у тебя в коде ты после пика перебираешь все сюрфейсы объекта, создаёшь объекты со всеми их тексами, затем назначаешь currtex имя последней в each-переборе тексы)
чето ты замутился

попробуй так:

Graphics3D 800, 600, 32, 2
camera = CreateCamera()
AmbientLight 255, 255, 255
;testmesh loading==========
testl = LoadMesh( "map.b3d" )
	PositionEntity testl, 0, 0, 10
	EntityPickMode testl, 2
;======================
currtex$=""

While Not KeyHit(1)
;texture detection==========
playerf_pick = CameraPick( camera, MouseX(), MouseY() )
If PickedEntity() = testl Then

	level_surface = PickedSurface()
	level_brush = GetSurfaceBrush( level_surface )
	level_material = GetBrushTexture( level_brush, 0 )
	currtex$=TextureName(level_material)

EndIf
;======================
UpdateWorld
RenderWorld
;draw current texture name===


Text 10, 300, currtex$
;======================
Flip
Wend
End
код не тестил, но вроде правильно должно быть
не секу че ты там хотел с типами сделать
сравнивай узнанный texturename с базой и узнавай материал
texturename лучше избавлять от пути, в примерах блица была функция StripPath$

---
H@NON опередил)
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
H@NON (03.11.2009), HorNeS (03.11.2009)
Старый 03.11.2009, 16:48   #6
HorNeS
Оператор ЭВМ
 
Регистрация: 14.01.2006
Сообщений: 25
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Работа с материалами

Оп-па, спасибо большое! А с типами это я уже отчаялся просто и наугад сделал. :D
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с RMS Doctor Drive JAVA Micro Edition 1 15.07.2009 16:41
моя работа Trilliput Работы 7 10.01.2008 21:10
работа с RSS PHPman Основной форум 5 06.08.2007 00:04
Работа с файлами smersh Blitz3D 5 04.07.2007 12:56
Работа с БД Raiter Visual Basic 0 22.02.2007 16:45


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


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