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

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

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

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

Ответ
 
Опции темы
Старый 28.05.2007, 12:11   #1
X-Ranger
AnyKey`щик
 
Регистрация: 18.10.2006
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Реализация эффекта линз

С Блитцом идет пример: Blitz 3D Samples\AGore\GrassDemo

Там реализован эффект от линз, когда появляются блики при "попадании источника света в видимость камеры"

Как реализовать подобный эффект с учетом того что истоник бликов может быть закрыт различными предметами (при закрытии источника света - блики исчезают).

единственно что я догадался пользовать это

EntityPickMode PF, 2
If EnityVisible(Camera, PivotLight) Then
  Показать_Спарайты
Else
  Спрятать_Спрайты
End If
Мне не очень нравится то, что эффект пропадает в случае заграждения слишком резко и не высокая производительность этого метода.

Есть ли другие способы определения видимости объекта или даже реализации самого эффекта более быстродействующие и/или более точные.
(Offline)
 
Ответить с цитированием
Старый 28.05.2007, 12:47   #2
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Re: Реализация эффекта линз

ух.. прикольно... хочу так же.. Присоединяюсь к запросу..
(Offline)
 
Ответить с цитированием
Старый 28.05.2007, 23:27   #3
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,743
Написано 5,461 полезных сообщений
(для 15,676 пользователей)
Подмигивание Re: Реализация эффекта линз

Г-муха-ха!! А вот у меня в Матвее уже есть линзовые эффекты! Простов случае
[blitz]EntityPickMode PF, 2
If EnityVisible(Camera, PivotLight) Then
Показать_Спарайты
Else
Спрятать_Спрайты
End If[/blitz]

У меня есть функция
[blitz]
Function Спрятать_спрайты
Прозрачность каждого линза системы уменьшаем на 0,05
If прозрачность < 0 то Hide_entity все спрайты нах
end function

Function показать_спрайты
If прозрачность спрайтов < 0 то Show_entity все спрайты, опять же, нах.
Else увеличить прозрачность каждого спрайта на 0.05
end function
[/blitz]

Также вместо
[blitz]If EnityVisible(Camera, PivotLight) Then[/blitz]
можно сделать так:
[blitz]If EnityVisible(Camera, PivotLight) and EntityInView PivitLightThen[/blitz]
Так же я у себя уменьшаю/увеличиваю сияние солнца - так получается ещё красивее.

Но помните - это всё кушает ресурсы.

З.Ы. Ещё у меня есть вычисление косинуса угла между камерой и солнцем, что делает появление\исчезание линз полностью соответствующим реальности, но это всё убивает на корню производительность.
Присоединяюсь к вогпросу: "Есть ли более точные/производительные решения?"
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 28.05.2007, 23:27   #4
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Re: Реализация эффекта линз

Я видел реализацию где-то здесь
http://www.boolean.name/forumdisplay.php?f=87
поищи.
(Offline)
 
Ответить с цитированием
Старый 29.05.2007, 01:56   #5
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Реализация эффекта линз

Не видел примера, но как понял, там нету материального объекта, как реализовть спрятание:
Значит, создаём в кажлом месте где нужно этот эффект сделать, сферу, с прозрачностью 0, далее в цикле, каждый период времени, просто делает CameraPick в точку полученную функцией CameraProject(координаты сферки), да и прописать пикаблемоде сфере и всему окружающему, что может загараживать, не забудь, так вот если пикедентити=сфера, то видно, если другой любой объект, то загороженно.
(Offline)
 
Ответить с цитированием
Старый 27.01.2010, 19:01   #6
Flash
Нуждающийся
 
Регистрация: 26.04.2006
Сообщений: 66
Написано 8 полезных сообщений
(для 21 пользователей)
Ответ: Реализация эффекта линз

Вот функция для бликов, но она отжирает фпс при нахождении в кадре 2 и более бликов ровно в 2 раза, вот это действительно проблема
Global  flar.flare
 
 Type Flare
  Field lightsphere 
  Field lightsp
  Field visible
  Field timefade
  
End Type
 
 Function CreateNewFlare.Flare(x#,y#,z#,sx#,sy# ) 
 
 
flar.Flare=New Flare
  flar\lightsphere = CreateSphere() 
  EntityAlpha flar\lightsphere, 0
  PositionEntity flar\lightsphere,x,y,z
  EntityPickMode flar\lightsphere, 2
  flar\lightsp=LoadSprite( ".\Data\effects\misc_flare.png",8,flar\lightsphere )
  ;HandleSprite f\lightsp,0,-1
  ScaleSprite flar\lightsp,sx#*10,sy#*10
  PositionEntity flar\lightsp, 0,0,0
  SpriteViewMode flar\lightsp,3
  EntityColor flar\lightsp,100,100,100
  ;EntityShininess f\lightsp, 1 
  EntityOrder flar\lightsp, -1
  HandleSprite flar\lightsp, 0, 0
  flar\visible = False
  Return flar
End Function

 Function UpdateFlares()
  For flar.Flare=Each Flare
    If EntityVisible(CameraBody, flar\lightsphere) And (Not flar\visible)
       flar\visible = True
       EntityColor flar\lightsp,150,150,150
       distan = EntityDistance(CameraBody,flar\lightsphere) 
       scale = distan/2
       ScaleSprite flar\lightsp, scale, scale
       ShowEntity flar\lightsphere 
       RotateSprite flar\lightsp, EntityYaw(camerabody)*2
    Else
       If flar\visible
flar\visible = False
       ; If Rnd(500)<100 Then  HideEntity flar\lightsphere 
          flar\timefade = 100
       Else
          If flar\timefade >= 0
             flar\timefade = flar\timefade - 10
             EntityColor flar\lightsp,flar\timefade,flar\timefade,flar\timefade 
             
          EndIf         
       EndIf 
    EndIf
  Next
End Function
(Offline)
 
Ответить с цитированием
Старый 27.01.2010, 19:38   #7
Hurrit
Мастер
 
Аватар для Hurrit
 
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений
(для 2,207 пользователей)
Ответ: Реализация эффекта линз

Спустя два с половиной года блики нашлись, УРА ТОВАРИЩИ УРА!!1!
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Hurrit за это полезное сообщение:
ABTOMAT (27.01.2010), Android (28.01.2010), Harter (28.01.2010)
Старый 27.01.2010, 19:54   #8
Flash
Нуждающийся
 
Регистрация: 26.04.2006
Сообщений: 66
Написано 8 полезных сообщений
(для 21 пользователей)
Ответ: Реализация эффекта линз

Нашлись то нашлись, но жрут фпс, попробую сделать это на фасте, может чего добьюсь.
(Offline)
 
Ответить с цитированием
Старый 27.01.2010, 21:18   #9
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: Реализация эффекта линз

попробуй ничего не делать.
если кому-то внезапно понадобится эффект - ищем тут (видел как минимум 3 очень качественных) http://www.blitzbasic.com/codearcs/codearcs.php?cat=11
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Randomize (28.02.2010)
Старый 24.02.2010, 02:09   #10
Program23
Бывалый
 
Аватар для Program23
 
Регистрация: 26.04.2009
Адрес: Россия, Уфа
Сообщений: 680
Написано 182 полезных сообщений
(для 406 пользователей)
Ответ: Реализация эффекта линз

помоему EntityOrder линза,параметр.имха ща 3ночи сижу на сотике.смореть код -лень комп врубать.короч этой командой делаем линзу на задний план,её перекрывают другие объекты.или я туплю,башка не варит.я спать...
__________________
Фриланс:
Freelancer.com
Upwork
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация леса. Yanez 3D-программирование 17 26.12.2008 11:51
Реализация простой камеры. Данил 3D-программирование 22 18.11.2007 02:20
Реализация диалога. Рудольф 3D-программирование 3 14.07.2007 17:13
Реализация трассера nJunk 3D-программирование 11 17.04.2007 02:09
Реализация игрока в FPS X-Ranger 3D-программирование 7 06.03.2007 02:09


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


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