forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Тень в AShadow lib (http://forum.boolean.name/showthread.php?t=14025)

Halk-DS 10.01.2011 00:35

Тень в AShadow lib
 
Подскажите пожалуйста возможно ли зделать так чтоб АШедоу отбрасывал тень от обьектов с альфа прозрачностю, вне зависимости от их прозрачности? :-D

Короче расскажу на примере. Игра, вид сверху, типок забегает в дом и крыша дома делается прозрачной на 75%. Как только альфа канал крыши из 100% стает 99% так сразу пропадают нужные мне тени, а появляются такие, как будто дом реально без крыши. Как зделать чтоб ети тени оставались?:''((



Ну и рас уж одно спросил то спрошу уже все: :-D
Может ли обьект быть одновременно и кастером и ресивером? Типа бегает мой перс, пускает тень напол, а на него например пускает тень дом?

Я стыкнулся с проблемой, ФПС ограничитель мешает работе ашадоу. А мешает тем образом, что размывает изображение, типа бегу я, а за мной ище один полупрозрачный я... :4to:
Алгоритм ФПС таков:
Код:

Global period
Global FPS=40
Global time,elapsed,ticks,tween#
period=1000/FPS
time=MilliSecs()-period


Repeat
Repeat
  elapsed=MilliSecs()-time
Until elapsed
 ticks=elapsed/period
 tween#=Float(elapsed Mod period)/Float(period)
 For k=1 To ticks
  time=time+period
  If k=ticks Then CaptureWorld

ЛОГИКА

ARenderWorld Cam,1,.6 ;- Если ето команда до "Next" - появляется тот лаг.

Next

ARenderWorld Cam,1,.6 ;- А если после, то все гуд, но насколько я понимаю я теряю немного в плавности смены кадров?

Flip
Until KeyHit(1)
End


Заранее спс :)

Randomize 10.01.2011 04:14

Ответ: Тень в AShadow lib
 
Ух.

По поводу размытия:
1) Открываешь ashadow.bb
2) ищешь ARenderWord и читаешь
3) повторяешь пункт 2, пока не поймёшь откуда размытие

1 объект и кастером и ресивером может быть.


Тут же неправильно тень лежит.

Строчку:
Цитата:

For k=1 To ticks
time=time+period
If k=ticks Then CaptureWorld
Убрал бы.


ARenderWorld делать только после цикла!

Очевидные советы:
1) Взять FastExt. Она не конфликтует с Windows 7 и в отличии от AShadow всё ещё поддерживается автором.
Хотя ANDREYMan вроде вернулся в геймдев и мы можем ждать от него стабильную версию AShadow.

2) В TopDown игре тени можно и руками написать (просто вниз отбрасывать их и всё как в GTA 1,2)

Кодом не поделюсь ибо нет Blitz3d

Halk-DS 10.01.2011 04:36

Ответ: Тень в AShadow lib
 
Биг спс.

Если "ARenderWorld делать только после цикла!" тогда проблема с размытием моя снята, но если у когото есть ответ, буду рад услышать.

Оке, строчку уберем:)

А насчет ашадоу, пока она будет меня устраивать, буду юзать, ато FastExt для меня немного замысловатый...

А насчет
Цитата:

1 объект и кастером и ресивером может быть
Я так понимаю там нужно углублятся в хелп по ашадоу, или там просто есть какойто параметр чтоб выставить?

Ну с етим всем ето хорошо, главный вопрос, что там с тенью в домике :(


Цитата:

Тут же неправильно тень лежит.
спасибо кеп :-D

ANDREYman 12.01.2011 16:54

Ответ: Тень в AShadow lib
 
Вложений: 1
На вин7 всё работает.

Цитата:

Сообщение от Halk-DS
Подскажите пожалуйста возможно ли зделать так чтоб АШедоу отбрасывал тень от обьектов с альфа прозрачностю, вне зависимости от их прозрачности?

Должен отбрасывать, см. скрин ниже
Думаю проблема не в прозрачности.
PS
Какая версия библиотеки?

Halk-DS 12.01.2011 17:07

Ответ: Тень в AShadow lib
 
Выдрал из Ashadow.bb

Const ShadowLibraryVersion$="1.0.9.9"


У меня альфа канал плавно падает с 1.0 до 0.3 когда перс подбегает к домику.
Вот скрин альфа 1.0:





Вот скрин фльфа 0.9:





А в первом посте скрин альфа 0.25

Halk-DS 12.01.2011 17:15

Ответ: Тень в AShadow lib
 

Я так понимаю появление ANDREYman в етом топике является свидетельством етой строчки:
Цитата:

Хотя ANDREYMan вроде вернулся в геймдев и мы можем ждать от него стабильную версию AShadow.
Да прибудет с нами Шедоу мастер!

ANDREYman 12.01.2011 17:26

Ответ: Тень в AShadow lib
 
попробуй так:
сделай ей entityAlpha 0, скопируй и меняй прозрачность копии(которая будет ресивером с параметром 0 ).

ANDREYman 12.01.2011 18:01

Ответ: Тень в AShadow lib
 
Нет, не пробуй так :)

Новый план:
1. Скачай обновлённую библу с сайта
2. Оставь всё как у тебя раньше было, только крыше сделай EntityZfail entity, 2

Halk-DS 12.01.2011 18:22

Ответ: Тень в AShadow lib
 
Незнаю правильно ли я все понял. Но дело было так:

Код:

Загружаем етап:
...
D\Obj=ALoadAnimMesh("***.B3D",0,2)
EntityAlpha FindChild(D\Obj,"roof"),0
D\ObjCopy=ACopyEntity(D\Obj,0,0)
D\Roof=FindChild(D\ObjCopy,"roof")

Дальше бла бла бла
И в цыкле есть функция упдейта списка: D.Objeckts
Там определяется переменная D\RoofAlpha#

И в конце функции:
EntityAlpha D\Roof,D\RoofAlpha#

Подвога в собственном коде что я не написал в примере - не вижу...

Изменений нет



Прочитал пост, увидел, делаю.......................

Halk-DS 12.01.2011 18:43

Ответ: Тень в AShadow lib
 
От теперь уже ближе к телу :-D
Вот результат:
RoofAlpha#=1




RoofAlpha#=.9




RoofAlpha#=.25



Как видно в момент перехода освещение немного пестрит глаз, но я так понимаю что уже ничего зделать нельзя? (Скрин№2) :4to:

ANDREYman 12.01.2011 18:59

Ответ: Тень в AShadow lib
 
Как не странно, можно :)

Цитата:

попробуй так:
сделай ей entityAlpha 0, скопируй и меняй прозрачность копии(которая будет ресивером с параметром 0 ).
:-D

Halk-DS 12.01.2011 19:25

Ответ: Тень в AShadow lib
 
Спасибо огромное. Проблема решена и все отлично работает! Я даже понял сам принцип!!!!111пыщ-пыщ :girl_cray2:

Вопрос закрыт! :-D

п.с. Возможно я еще вернусь к етой теме некоторое время спустя :(


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot