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

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

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

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

Ответ
 
Опции темы
Старый 13.12.2006, 01:47   #16
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Вывод названий элементов загруженной модели

я думаю надо делать через списки. типа:
type my_element
field ent
end type

=================================================

Function PickModeMesh(entity,t_ype)
For i=1 To CountChildren(entity)
child=GetChild(entity,i)

me.my_element=new my_element
me/ent=child

EntityPickMode child,t_ype
If CountChildren(child)>0
PickModeMesh(child,t_ype)
EndIf
Next
End Function

================================================== ===
name$=input("ddtlbnt ccasf:")

for me.my_element=each my_element
if lower(entityname(me\ent))=lower(name$) then // ета часть выбрана
next
(Offline)
 
Ответить с цитированием
Старый 14.12.2006, 12:39   #17
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Re: Вывод названий элементов загруженной модели

сенкс огромный - попробую...
только попозже, работы много.
Обязательно отпишусь - а вообще HolyDel, огромный тебе респект. Ибо, увы, мой мозг, наверное, уже просто не воспринимает ни понятие типа ни простейшие логические операции. Пытаюсь въехать уже в готовый код - очень со скрипом получается, молодежи как то смотрю попроще.
(Offline)
 
Ответить с цитированием
Старый 17.12.2006, 18:14   #18
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Re: Вывод названий элементов загруженной модели

Я абсолютно дико извиняюсь =)
Но опять вопрос, очень надеюсь на помощь.
Вернее 2 вопроса.
Ибо наконец удалось из предыдущего поста HolyDel'а найти второй элемент второй камерой - парился всю ночь (EntityInView(showmodel,cam2) - помог найти пропажу) - только вот надо этот мех как-то привязывать ко второй камере по ее центру - а то каждая выбранная ентити появляется в разных ее углах. Можно ли камеру другим способом "привязать" к этому элементу (посадить в центр экрана, на строго определенном расстоянии - просто попытки подгона вручную координат увы ничего не дали) Объект перемещается относительно каких то своих координат так?


2-й вопрос по поводу поиска:
при выборе нормального эл-та - вылетает...расположил код так -
Сообщение от HolyDel
я думаю надо делать через списки. типа:
type my_element
field ent
end type
в начало

Сообщение от HolyDel
=================================================
Function PickModeMesh(entity,t_ype)
For i=1 To CountChildren(entity)
child=GetChild(entity,i)

me.my_element=new my_element
me/ent=child

EntityPickMode child,t_ype
If CountChildren(child)>0
PickModeMesh(child,t_ype)
EndIf
Next
End Function
================================================== ===
заменяем этой версией предыдущую функцию

в цикле -
if keyhit(57) then
Сообщение от HolyDel
name$=input("ddtlbnt ccasf:")

а вот с этой частью полный тупняк - пробую сделать ентити выделенным - вылет с ненайденым...
Сообщение от HolyDel
for me.my_element=each my_element
if lower(entityname(me/ent))=lower(name$) then
// ета часть выбрана
next
ета часть выбрана - это как???
(Offline)
 
Ответить с цитированием
Старый 18.12.2006, 02:54   #19
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Вывод названий элементов загруженной модели

А че с ней зделать то нада. указатель на ентити есть, далее с етой ентити можете делать че захотите. Можно еще добавить поле selected и присаввать ему еденичку, а потом перебирать все елементы списка и когда найден выбранный заставить его моргать, хотя тогда будут проблемы с выделением мышью, короче, чтоб работало и то и то придется делать глобальную перестройку кода, если скините новую версию (архив) посмотрю.
(Offline)
 
Ответить с цитированием
Старый 18.12.2006, 04:01   #20
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Смущение Re: Вывод названий элементов загруженной модели

Сообщение от HolyDel
А че с ней зделать то нада. указатель на ентити есть, далее с етой ентити можете делать че захотите. Можно еще добавить поле selected и присаввать ему еденичку, а потом перебирать все елементы списка и когда найден выбранный заставить его моргать, хотя тогда будут проблемы с выделением мышью, короче, чтоб работало и то и то придется делать глобальную перестройку кода, если скините новую версию (архив) посмотрю.
Логично! =) Чтобы ответить надо знать что нужно. Вскрываюсь...

Исходные данные. Итак есть модель, содержащая кучу элементов (более сотни), ну.. например, игровая карта а-ля варкрафт... ну или фалаут... или ГТА1-2 или да все что угодно.
Все объекты на ней (дома/строения/области) имеют заранее указанные оригинальные названия. текстур пока на элементах нет.
Камера тупо летает над картой.

Задача. Используя блитц сделать своеобразный вьювер.
1) сделать выбор объекта мышкой (благодаря Вам - готово, объект не мигает (косяк при клике) - но зато выделяется другим цветом, хотя для некоторых элементов не очень наглядно... может флажек рисовать? или в рамочку обводить? )

2) для большей наглядности создать отдельную камеру2 для показа определенного (выбранного на данный момент) элемента в 3д, причем только его без остальных элементов (просто тупо крутить его перед камерой выводя поверх информацию о объекте - напр. "здание - магазин оружия" или "пещера драконов" - текст вбить по желанию (я просто делаю - при указании на элемент я подменяю его имя заданное в редакторе на "виртуальное"
name$ = Replace$(name$,"NOVA_2","<Имперская база - Nova 2!")
работает... правда вбивать сотню элементов в код - сурово... А они же еще меняются... )

3) организовать поиск по элементом с их выделением и передачей во камеру2 и причем камера 1 (основная) должна .... эээ... подъзжать к этому зданию/сооружению (центроваться на ней). тоесть по сути это пункт 2 набранный с клавиатуры.

4) Теоретически еще хотелось бы реализовать текстурирование опр. элементов из общего списка(имеющих например имена - "пещера *" из блитца определенными текстурами) - но это не особо горит...

Короче классический пример стратегии или top/down RPG типа Fallout... =)
Очень сам их люблю - но попытался ткнутся - оказлось все довольно заморочено.

ЗЫ.
- Проект ТОЧНО не коммеческий, а чисто любительский =) (мозгов всеравно не хватит)
- Я НЕ пытаюсь выехать на чужем горбе - просто поставил себе цель - очень бы хотелось ее реализовать - надоело тупо скатывать и переделывать какието демки и просто менять в них значения, захотелось мааааленький такой проект где есть определенная цель=)))
- я тут подумал, что можно использовать например для поэлементного просмотра сложных агрегатов (узлов/движков и т.д.) нарисованных в автокаде/максе.

ЗЫЗЫ HolyDel, спасибо еще раз за помощь! СОрцы пошлю позже, но по сути я там ничего после тебя не изменял координально... поиск не прикрутил.... отмаштабировал только модель да и "нащупал" с грехом пополам второй камерой отдельный меш. Ну там косметика еще - скайбокс, фог, лампочки повесил...
(Offline)
 
Ответить с цитированием
Старый 19.12.2006, 05:16   #21
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Re: Вывод названий элементов загруженной модели

HolyDel, выслал исходник тебе на мыло!

посмотри пожалуйста... Если что непонятно - стучись, хотя думаю в основном будет непонятно мне. (комментируй свой код пожалуйста, ибо цель то не просто результат, а его понимание и осознание =))) - а я неоторые фишки не сразу схватываю... Но быстро учусь...
(Offline)
 
Ответить с цитированием
Старый 21.12.2006, 02:12   #22
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Вывод названий элементов загруженной модели

собсно:
[blitz]
If KeyDown(57) Then
name$=Input("Имя объекта:") ;- внимание после нажатия пробела - появляется лишний пробел в строке запроса...АККУРАТНО ИСКАТЬ
For me.my_element=Each my_element
If Lower(EntityName(me\ent))=Lower(name$) Then
;AmbientLight 16,15,26 ;общий свет
;showmodel=CopyEntity(ent) ;не пашет ... =(
If oent<>0 And oent<>me\ent Then EntityAnimColor(oent,255,255,255)
EntityAnimColor(me\ent,15,205,155)
oent=me\ent
PlaySound (sndPlayerDie)
EndIf
Next
End If
[/blitz]
теперь объясню:
в циклу перебераем все объекты, если нушелся объект с заданным именем то:
1) развыделяем тот объект, который был выделен
2) выделяем найденый объект
3) запоминаем ссылку на вновь выделенный объект, чтоб его можно было потом развыделить
4) играем звук
все.
(Offline)
 
Ответить с цитированием
Старый 21.12.2006, 03:14   #23
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Плохо Re: Вывод названий элементов загруженной модели

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

эх... посмотрел я на все это... может мне забить на карту аля варик,она загибатся стала - 100000 поликов модель, и никакие фоги не помогут - модель то одна....тормозит. Зато мне тут один конструктор модель двигателя принес автокадовскую - поколдовал над кодом - такое заглядение, каждый узел выделяется - ляпота!
может карту родного города слепить? там же одни кубы-хрущевки . короче как чувствовал - в этом что-то есть. И главное более-менее понятно.

Ище вопрос HolyDel, ты вторую камеру относил на 20000 единиц для того чтоб она основную модель не захватывала? Ограничение на дальность как я понял.
(Offline)
 
Ответить с цитированием
Старый 21.12.2006, 23:10   #24
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Вывод названий элементов загруженной модели

Спасибо за слова добрые.

насчет модели:
попробуй ставить EntityParent child,0 (!!! d gjcktly.. jxthtlm). так удастся разбить одну модель на несколько. и будет работать FOG, хотя 100 к.п. для сцены ето много.

насчет камеры:
так точно, именно для этого.
(Offline)
 
Ответить с цитированием
Старый 23.12.2006, 05:27   #25
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Re: Вывод названий элементов загруженной модели

Поиск пашет - я пищу... Я правда не знаю нафик это мне пока надо - но чтото в этом есть! до флюшкея вот допер =)


Сообщение от HolyDel
попробуй ставить EntityParent child,0 (!!! d gjcktly.. jxthtlm). так удастся разбить одну модель на несколько. и будет работать FOG, хотя 100 к.п.
эээ в последнюю очередь где...
и что должно случится - ну отрубаем мы родителя... гм... фог только на 1 элемент и действует получается?

я просто чутка логику потерял...
Единственное что возможно это поможет эээ энтитям/дубликатам во вторую камеру иметь одну и ту же координату а не смещатся относительно центра, тоесть так же как они и находятся в исходной позиции... или лучше кидать в центр высчитывая центральную координту ентити.. ну эт я придумаю... аниммеш центровать понял как, а уж обычный тоже придумаю =)
(Offline)
 
Ответить с цитированием
Старый 08.01.2007, 03:56   #26
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Re: Вывод названий элементов загруженной модели

Гм.. очередной вопрос -
используя вышеуказанные операции находим ентити...
а вот теперь хочу чтобы над ними висел Labelentity или чтою после поиска камера подъезжала к найденому объекту (тоесть названия либо над всеми ентитями в камере, либо над выбраным...)
Только вот никак координаты не пойму как находить у oent (выделеной)...


классический код я так понимаю чтото вроде ...

Function Label3D_Label(camera, entity, label$, offx#=0, offy#=0, offz#=0) ;-; camera - which camera is being used to display the world.

; entity - which entity to draw a label over
; label$ - text to show as the label
; offx# - world X offset position of the center of the label
; offy# - world Y offset position of the center of the label
; offz# - world Z offset position of the center of the label


If EntityInView (entity, camera)
CameraProject camera, EntityX#(entity, True) +offx#, EntityY#(entity, True) +offy#, EntityZ#(entity, True) +offz#
w = StringWidth (label$)
h = StringHeight (label$)
x = ProjectedX () - (w / 2) - 1
y = ProjectedY () - (h / 2) - 1
Color 0, 0, 0
Rect x, y, w + 2, h + 2, 1
Color 255, 255, 255
Text x, y, label$
EndIf
End Function


только вот для элементов анимеха он не катит - а мммм... стыдно признаться, я так и не понял даже читая как находим нужный...
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перебор элементов типа в обратном порядке ELIAS Blitz3D 4 08.12.2009 22:31
Lib_line32 - Горизонтальная полоска элементов odd Библиотеки 7 29.09.2009 21:59
построчный вывод Avatara Основной форум 4 10.11.2008 23:06
Плавный вывод текста GomZik 3D-программирование 21 15.01.2008 21:30
Примеры элементов GUI FrankH FAQ 17 14.01.2008 23:20


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


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