проблема с камерой
| |
defaultNick4188 | Дата: Пятница, 25.06.2010, 22:37 | Сообщение # 1 |
ламер
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
| Доброго времени суток. Столкнулся с проблемой - проект изрядно загружен объектами. Как бы осуществить исчезновение объектов по мере удаления от них. Ну например стою у города я его вижу, отхожу от него он становится прозрачнее и прозрачнее пока не исчезнет. Пытался сделать туман, но разочаровался в этом способе. Хоть туман и скрывал объекты но он все так же как и раньше перегружал процесс. Хотелось бы что бы чтоб объекты ...ну загружались допустим в радиусе 200метров. Устанавливать дальний обзор камеры 200 - глухо , так как в переди получается черная пустота. Пожалуйста, кто может помогите или куском кода или натолкните на путь истенный ) желательно с коментариями ). Заранее спасибо
|
|
| |
turBO | Дата: Пятница, 25.06.2010, 22:57 | Сообщение # 2 |
Полковник
Группа: Администраторы
Сообщений: 297
Награды: 5
Репутация: 12
Статус: Offline
| Quote Как бы осуществить исчезновение объектов по мере удаления от них Code const dist_edit=200 For c.MyObjects=Each myObjects if EntityDistance c\entity> dist_edit And c\visible=1 Then HideEntity c\entity c\visible=0 endif if EntityDistance c\entity<= dist_edit And c\visible=0 Then showEntity c\entity c\visible=1 endif Next
If 2+2<>4 Then Restart
|
|
| |
defaultNick4188 | Дата: Пятница, 25.06.2010, 23:05 | Сообщение # 3 |
ламер
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
| Спасибо большое, правда без коментов для моего не проженного программированием мозга тяжеловато, но пойду разбираться. Если будет время поясни малость,но всеравно огромное спасибо
|
|
| |
ParisHilton | Дата: Пятница, 25.06.2010, 23:31 | Сообщение # 4 |
прогер
Группа: Пользователи
Сообщений: 197
Награды: 2
Репутация: 5
Статус: Offline
| Идея такова: Весь мир представляет собой массив объектов, в приведенном примере типов. Рассчитывается дальность до каждого из них. Если она больше 200 объект "выключается", меньше "появляется" Плавное появление можно сделать с помощью EntityAlpha
Мы ищем предмет цели для того чтобы найти результаты его следствия
|
|
| |
defaultNick4188 | Дата: Пятница, 25.06.2010, 23:49 | Сообщение # 5 |
ламер
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
| Тоесть как я понял должно быть примерно так с деревьями - Const dist_edit=200 For treestype=Each tree1,tree2 и тд.??? If EntityDistance treestype> dist_edit And c\visible=1 Then ---> что означает c\visible??? HideEntity treestype c\visible=0 ----> опять же таки не понял EndIf If EntityDistance treestype<= dist_edit And c\visible=0 Then --> опятьт же таки непонятный мне c\visible=0 ShowEntity treestype c\visible=1 ---> ??? EndIf Next простите за мою дурковатость,но наберитесь капельку терпения
Сообщение отредактировал defaultNick4188 - Суббота, 26.06.2010, 00:19 |
|
| |
turBO | Дата: Суббота, 26.06.2010, 11:12 | Сообщение # 6 |
Полковник
Группа: Администраторы
Сообщений: 297
Награды: 5
Репутация: 12
Статус: Offline
| Quote (defaultNick4188) If EntityDistance treestype> dist_edit And c\visible=1 Then ---> что означает c\visible??? Параметр visible типа treestype будет содержать значение виден\невиден объекта treestype, и если его значение "не соответствует" состоянию (смотри код) будет соответственно скрыт или показан. Но этот параметр необязателен, просто это защита от постоянного срабатывания функций HideEntity и ShowEnitity, но я лично не знаю насколько они загружают систему. Можешь убрать из кода всё что связано с условиями visible. P.S. В коде надо писать Code EntityDistance treestype\entity, camera где treestype\entity-это модель дерева
If 2+2<>4 Then Restart
|
|
| |
defaultNick4188 | Дата: Суббота, 26.06.2010, 12:38 | Сообщение # 7 |
ламер
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
| For treestype=Each tree If EntityDistance treestype> dist_edit HideEntity treestype EndIf If EntityDistance treestype<= dist_edit ShowEntity treestype EndIf Next ругается зараза, выдает expecting end-of-line .
|
|
| |
turBO | Дата: Суббота, 26.06.2010, 23:25 | Сообщение # 8 |
Полковник
Группа: Администраторы
Сообщений: 297
Награды: 5
Репутация: 12
Статус: Offline
| Рабочий пример работы с исчезание объектов Code Graphics3D 640,480,16,2
Const UPS=60 Const dist_edit=120
cam=CreateCamera() MoveEntity cam,50,30,-30 RotateEntity cam,0,10,0
l=CreateLight()
Type treestype Field entity% End Type
p=CreatePlane() EntityColor p,255,0,0
For i=1 To 90 t.treestype=New treestype t\entity=CreateCube() PositionEntity t\entity,Rnd(1,100),0,Rnd(1,100) Next
period=1000/UPS time=MilliSecs()-period
Repeat Repeat elapsed=MilliSecs()-time Until elapsed ticks=elapsed/period tween#=Float(elapsed Mod period)/Float(period)
For t.treestype=Each treestype If EntityDistance( t\entity,cam)> dist_edit Then HideEntity t\entity;treestype EndIf If EntityDistance( t\entity,cam)<= dist_edit Then ShowEntity t\entity;treestype EndIf Next For k=1 To ticks time=time+period If KeyHit(1) End UpdateWorld Next If KeyDown(203) Then MoveEntity cam,1,0,0 If KeyDown(205) Then MoveEntity cam,-1,0,0 If KeyDown(200) Then MoveEntity cam,0,0,1 If KeyDown(208) Then MoveEntity cam,0,0,-1
RenderWorld tween Text 5,5,"Dvigay cursory, defaultNick4188 :-)" Text 5,15,"Tris count: "+TrisRendered() Flip
Forever
If 2+2<>4 Then Restart
|
|
| |
defaultNick4188 | Дата: Воскресенье, 27.06.2010, 04:03 | Сообщение # 9 |
ламер
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
| Спасибо вам огромное, и за объяснение и за коды, turBO за пример я бесконечно благодарен. Ты спас мои полугодовые труды.Когда нибудь и я добром отплачу, не забуду
|
|
| |
|