[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


  • Страница 1 из 1
  • 1
Модератор форума: Spidy, turBO  
Форум мира Blitz3D » Язык Blitz3D » Проекты на Blitz3D » проблема с камерой (не могу осуществить....)
проблема с камерой
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
Спасибо большое, правда без коментов для моего не проженного программированием мозга тяжеловато, но пойду разбираться. Если будет время поясни малость,но всеравно огромное спасибо smile
 
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

простите за мою дурковатость,но наберитесь капельку терпения smile

Сообщение отредактировал 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 за пример я бесконечно благодарен. Ты спас мои полугодовые труды.Когда нибудь и я добром отплачу, не забуду happy
 
Форум мира Blitz3D » Язык Blitz3D » Проекты на Blitz3D » проблема с камерой (не могу осуществить....)
  • Страница 1 из 1
  • 1
Поиск: