|
3D-программирование Вопросы, касающиеся программирования 3D мира |
10.01.2011, 00:35
|
#1
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Тень в AShadow lib
Подскажите пожалуйста возможно ли зделать так чтоб АШедоу отбрасывал тень от обьектов с альфа прозрачностю, вне зависимости от их прозрачности?
Короче расскажу на примере. Игра, вид сверху, типок забегает в дом и крыша дома делается прозрачной на 75%. Как только альфа канал крыши из 100% стает 99% так сразу пропадают нужные мне тени, а появляются такие, как будто дом реально без крыши. Как зделать чтоб ети тени оставались?
Ну и рас уж одно спросил то спрошу уже все:
Может ли обьект быть одновременно и кастером и ресивером? Типа бегает мой перс, пускает тень напол, а на него например пускает тень дом?
Я стыкнулся с проблемой, ФПС ограничитель мешает работе ашадоу. А мешает тем образом, что размывает изображение, типа бегу я, а за мной ище один полупрозрачный я...
Алгоритм ФПС таков:
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
Заранее спс
Последний раз редактировалось Hulk-DS, 10.01.2011 в 01:23.
Причина: Добавил рисунок!
|
(Offline)
|
|
10.01.2011, 04:14
|
#2
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: Тень в 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
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
|
|
10.01.2011, 04:36
|
#3
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Тень в AShadow lib
Биг спс.
Если "ARenderWorld делать только после цикла!" тогда проблема с размытием моя снята, но если у когото есть ответ, буду рад услышать.
Оке, строчку уберем
А насчет ашадоу, пока она будет меня устраивать, буду юзать, ато FastExt для меня немного замысловатый...
А насчет
1 объект и кастером и ресивером может быть
|
Я так понимаю там нужно углублятся в хелп по ашадоу, или там просто есть какойто параметр чтоб выставить?
Ну с етим всем ето хорошо, главный вопрос, что там с тенью в домике
Тут же неправильно тень лежит.
|
спасибо кеп
|
(Offline)
|
|
12.01.2011, 16:54
|
#4
|
Нуждающийся
Регистрация: 17.12.2010
Адрес: Санкт-Петербург
Сообщений: 87
Написано 55 полезных сообщений (для 214 пользователей)
|
Ответ: Тень в AShadow lib
На вин7 всё работает.
Сообщение от Halk-DS
Подскажите пожалуйста возможно ли зделать так чтоб АШедоу отбрасывал тень от обьектов с альфа прозрачностю, вне зависимости от их прозрачности?
|
Должен отбрасывать, см. скрин ниже
Думаю проблема не в прозрачности.
PS
Какая версия библиотеки?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
12.01.2011, 17:07
|
#5
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Тень в AShadow lib
Выдрал из Ashadow.bb
Const ShadowLibraryVersion$="1.0.9.9"
У меня альфа канал плавно падает с 1.0 до 0.3 когда перс подбегает к домику.
Вот скрин альфа 1.0:
Вот скрин фльфа 0.9:
А в первом посте скрин альфа 0.25
|
(Offline)
|
|
12.01.2011, 17:15
|
#6
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Тень в AShadow lib
Я так понимаю появление ANDREYman в етом топике является свидетельством етой строчки:
Хотя ANDREYMan вроде вернулся в геймдев и мы можем ждать от него стабильную версию AShadow.
|
Да прибудет с нами Шедоу мастер!
|
(Offline)
|
|
12.01.2011, 17:26
|
#7
|
Нуждающийся
Регистрация: 17.12.2010
Адрес: Санкт-Петербург
Сообщений: 87
Написано 55 полезных сообщений (для 214 пользователей)
|
Ответ: Тень в AShadow lib
попробуй так:
сделай ей entityAlpha 0, скопируй и меняй прозрачность копии(которая будет ресивером с параметром 0 ).
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
12.01.2011, 18:01
|
#8
|
Нуждающийся
Регистрация: 17.12.2010
Адрес: Санкт-Петербург
Сообщений: 87
Написано 55 полезных сообщений (для 214 пользователей)
|
Ответ: Тень в AShadow lib
Нет, не пробуй так
Новый план:
1. Скачай обновлённую библу с сайта
2. Оставь всё как у тебя раньше было, только крыше сделай EntityZfail entity, 2
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
12.01.2011, 18:22
|
#9
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Тень в 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#
Подвога в собственном коде что я не написал в примере - не вижу...
Изменений нет
Прочитал пост, увидел, делаю.......................
|
(Offline)
|
|
12.01.2011, 18:43
|
#10
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Тень в AShadow lib
От теперь уже ближе к телу
Вот результат:
RoofAlpha#=1
RoofAlpha#=.9
RoofAlpha#=.25
Как видно в момент перехода освещение немного пестрит глаз, но я так понимаю что уже ничего зделать нельзя? (Скрин№2)
|
(Offline)
|
|
12.01.2011, 18:59
|
#11
|
Нуждающийся
Регистрация: 17.12.2010
Адрес: Санкт-Петербург
Сообщений: 87
Написано 55 полезных сообщений (для 214 пользователей)
|
Ответ: Тень в AShadow lib
Как не странно, можно
попробуй так:
сделай ей entityAlpha 0, скопируй и меняй прозрачность копии(которая будет ресивером с параметром 0 ).
|
|
(Offline)
|
|
12.01.2011, 19:25
|
#12
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Тень в AShadow lib
Спасибо огромное. Проблема решена и все отлично работает! Я даже понял сам принцип!!!!111пыщ-пыщ
Вопрос закрыт!
п.с. Возможно я еще вернусь к етой теме некоторое время спустя
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:42.
|