forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Тени в Xors3d (http://forum.boolean.name/showthread.php?t=11700)

Motorboy 10.01.2010 15:56

Тени в Xors3d
 
Столкнулся с такой проблемой...
Запускаю свой проект в разрешении 1680х1050 - тени работают нормально.
Размер теневой текстуры в xInitShadows() 1024
если сменить разрешение на 800х600 тени отображаются неправильно.
если поменять размер теневой текстуры в xInitShadows() на 512 все работает...
Как я понял размер теневой текстуры надо ставить в зависимости от разрешения екрана? При разрешении 800х600 тени нельзя сделать более качественными?(1024-2048_) ?

Knightmare 10.01.2010 16:06

Ответ: Тени в Xors3d
 
Можно. Хэлп знает как.

Motorboy 10.01.2010 19:40

Re: Тени в Xors3d
 
Перечитал в хелпе раздел Shadows...и не нашел решение проблемы...:(
Подскажите хоть где в хелпе искать?

moka 11.01.2010 01:24

Ответ: Тени в Xors3d
 
Есть функция, с часть "DDS" вроди. После инициализации окна, нужно указывать размер буффера, который будет использоваться.

Knightmare 11.01.2010 09:20

Ответ: Тени в Xors3d
 
DDS это Direct Draw Surface.
А настраивать надо размер DSS - Depth Stencil Surface.

Motorboy 12.01.2010 21:51

Re: Тени в Xors3d
 
Спасибо за помощь. теперь все работает:)

FireOwl 06.02.2010 01:17

Ответ: Тени в Xors3d
 
Код:

Include "Xors3d.bb"

xGraphics3d 1280,1024,32,1,1
xSetBuffer xBackBuffer()

xInitShadows()
texture=xCreateTexture(1280,1024)

box=xCreateCube()
xScaleMesh box,10,.1,10
sphere=xCreatesphere(16)
xPositionEntity sphere,0,10,0

camera=xCreateCamera()
xPositionEntity camera,0,30,-30
xRotateEntity camera,45,0,0

xAmbientLight 25.5,25.5,20.0
light=xCreateLight(2)
xPositionEntity light,0,100,0
xLightRange light,100000

c#=0
While Not xKeyHit(1) Or xWinMessage("WM_CLOSE")
    xPositionEntity sphere,Sin(c)*5,10,Cos(c)*6
    xUpdateworld()
    xRenderShadows(camera,texture)
    xRenderWorld()
    xFlip
    c=c+2
Wend
End

Вопрос наверное тупой, но почему тени не работают? Что я упустил в коде?

Knightmare 06.02.2010 01:25

Ответ: Тени в Xors3d
 
Еще жалуются типа движок у нас плохой и ваще мы мудаки, плохо относимся к юзерам.
А как по другому-то? Вы даже из примера скопипастить не можете правильно (про хэлп я молчу).

Knightmare 06.02.2010 01:54

Ответ: Тени в Xors3d
 
Что? Какая паника? Я спокоен как удав.
Цитата:

Кстати почему послал нах из аси? я вроде не мудак =\
Я никого не авторизовываю. И радуйся - тебе повезло не встречаться со спам ботом под виндой.

shyrikkk 06.02.2010 19:47

Ответ: Тени в Xors3d
 
народ может я не втему !!!
но хоть ктонибуь может что нибудь в этом движке выложить????
, что хоть это за движок- над чем вы работаете ???

просто пишите что всё круто крутой движок а примеров ни каких и даже игр !!!

?Н??????????????????????

Knightmare 06.02.2010 19:52

Ответ: Тени в Xors3d
 
http://copperhead.xors3d.com/
http://www.vimeo.com/8354970
http://www.vimeo.com/7628851
И скоро будет выложен Armored Fury. Еще где-то я выкладывал линки на видео с фотографии с симулятора вертолета.
В общем херню сказал какую-то, юзай гугл.

BlackOut 06.02.2010 19:53

Ответ: Тени в Xors3d
 
Цитата:

народ может я не втему !!!
Будь в теме =>>> http://www.xors3d.com/
и форум http://www.ru.xors3d.com/ (на русских буковках)

Amatsu 11.02.2011 11:47

Ответ: Тени в Xors3d
 
Чтобы не плодить лишних тем.
В Xors3d я пока еще нуб, создал сцену потестить тени, загрузил модельку своего персонажа, она отображается так (см. плечи и кисти) http://images.tvlg.ru/images/00795996303772293776.jpg
Хотя в оригинальном блице таких проблем не наблюдалось.
И еще один вопрос, но уже по анимации - запускаю анимацию этого персонажа - движения не плавные а рваные, дерганные. Вот код:
Код:

;===  Подключаемые библиотеки
Include "xors3d.bb"



;===  Настройки графического режима
Global GWidth%=640
Global GHeight%=480
Global GDepth%=32
Global GMode%=1
;Global ShadowMode%=0
;Global EffectMode%=0
;Global GlowMode%=0
;Global ContrastMode%=0
Global VSyncMode%=0

fileout=ReadFile("game.cfg")
If fileout Then
  GWidth=ReadInt(fileout)
  GHeight=ReadInt(fileout)
  GDepth=ReadInt(fileout)
  ShadowMode=ReadInt(fileout)
  EffectMode=ReadInt(fileout)
  GlowMode=ReadInt(fileout)
  ContrastMode=ReadInt(fileout)
  VSyncMode=ReadInt(fileout)
EndIf

xGraphics3D GWidth,GHeight,GDepth,1,VSyncMode
xHidePointer()



;===  Создание камеры
camera%=xCreateCamera()
xCameraRange camera,0.1,3000
xCameraEnableShadows camera



;===    Переменные mouse look
xMoveMouse xGraphicsWidth()/2,xGraphicsHeight()/2
mousespeed#=0.5
camerasmoothness#=4.5



;===  Загрузка уровня
level%=xCreateCube()
xScaleEntity level,100,1,100
xPositionEntity level,0,-20,0
level1%=xCreateSphere()
xEntityColor level1,255,150,100
xScaleEntity level1,10,10,10
xPositionEntity level1,-10,-10,-10

testtt=xLoadAnimMesh("D:\Developing\realise_models2\HERO1\test4.b3d")
xAnimate(testtt,ANIMATION_LOOP,1)
xScaleEntity testtt,30,30,30



;===  Создание освещения
light_up%=xCreateLight()
xRotateEntity light_up%,70,0,0
light_down%=xCreateLight()
xRotateEntity light_down,-110,0,0



;===  Инициация системы теней
xInitShadows(1024,0,512)
xLightEnableShadows light_up,1
xSetShadowParams 4,0.85,True,300
xLightShadowEpsilons light_up,0.0001,0.5



;===  Главный цикл
While Not xKeyHit(1) Or xWinMessage("WM_CLOSE")

;===  Тело главного цикла

  If xKeyDown(KEY_W) Then xMoveEntity camera,0,0,5
  If xKeyDown(KEY_S) Then xMoveEntity camera,0,0,-5
  If xKeyDown(KEY_A) Then xMoveEntity camera,-5,0,0
  If xKeyDown(KEY_D) Then xMoveEntity camera,5,0,0
  mxs#=CurveValue(xMouseXSpeed()*mousespeed,mxs,camerasmoothness)
  mys#=CurveValue(xMouseYSpeed()*mousespeed,mys,camerasmoothness)
  camxa#=camxa-mxs Mod 360
  camya#=camya+mys
  If camya<-89 Then camya=-89
  If camya>89 Then camya=89
  xMoveMouse xGraphicsWidth()/2,xGraphicsHeight()/2
  xRotateEntity camera,camya,camxa,0.0

  xUpdateWorld()

;===  Рендер изображения
  xRenderWorld(1.0,1)
  xFlip()

Wend



;===  Функция сглаживания поворота мыши
Function CurveValue#(newvalue#,oldvalue#,increments)
        If increments>1 Then oldvalue#=oldvalue#-(oldvalue#-newvalue#)/increments
        If increments<=1 Then oldvalue#=newvalue#
        Return oldvalue#
End Function

Да, и последний вопрос - есть ли в ксорсе встроенная система фиксации количества фпс, или надо как-то вручную ее прописывать, как в блитце?

Knightmare 11.02.2011 15:31

Ответ: Тени в Xors3d
 
1) Если тени отключить проблема с неверным затенением на плечах остается?
2) Без самой модели я тебе нифига не скажу по анимации, подозреваю что тамопять ккая-то херня невероятная выданная пайплайном. Например, там стоит 1 FPS. Что смишно - блитз игнорирует часть родного формата и хоть 0 FPS ставь все ок.
3) Ну есть тот же твиннинг, алсо можешь глянуть это - http://area.xors3d.com/forums/viewto...=7&t=465#p2508

.Squid 11.02.2011 15:39

Ответ: Тени в Xors3d
 
Скинь свою модель на [email protected] (ыы, хоть бы никто не просек, что мы модельки на свою ММОРПГ собираем)
Цитата:

Да, и последний вопрос - есть ли в ксорсе встроенная система фиксации количества фпс, или надо как-то вручную ее прописывать, как в блитце?
Как ты себе это представляешь? Что должен делеть двиг, если скорость рендеринга превышает заданный лимит? Просто простаивать? Тогда можно запилить. Только кому оно надо.
UPD. Опередил :(

Amatsu 11.02.2011 16:44

Ответ: Тени в Xors3d
 
Пока сидел на работе - понял почему тени глючат. В этих местах на руках у модели при создании карты текстуры полигоны "смяты", то есть не растянуты. Видимо тени накладываются прямо по текстурной сетке модели, если где-то текстура криво наложена - там и тень будет кривая. В общем будут перетекстурировать. По этой теме сразу вопрос - есть какие-нить простые программы для создания автоматической текстурной выкройки модели (3D Max не особо хочется ставить ради этого, бо я привык к другим программным продуктам, хотелось бы чего-нить небольшое и относительно узкоспециализированное).

По поводу анимации - экспортил из Милки, я в ней всю анимацию привык делать. Там стоит 29 кадров, если ты об этом. Менять скорость при экспорте нельзя. В оригинальном блице никаких подтормаживаний, менял скорость как угодно - всегда плавно моделька двигалась. Проблема возникла только на ксорсе.

Я про то, чтобы не было как в блитце: если фпс много - все персонажи носятся по уровню как торпеды, если фпс мало - все происходящее на экране будто в киселе. В блитце приходилось фиксировать фпс, делать таймеры и через CaptureWorld и цикл вручную выравнивать скорость игры - получалось что при большом или низком фпс игра продолжала идти с нужной скорость.

Knightmare 11.02.2011 16:47

Ответ: Тени в Xors3d
 
Тени от текстурной развертки модели почти никак не зависят. Исключая маски текстур.
Милкшейп - неадекватное говно, надо ковырять модель и смотреть чего оно там натворило.
По FPS - ну я же говорю, твиннинг есть как в блитзе, ну и по ссыле погляди.

Amatsu 11.02.2011 17:03

Ответ: Тени в Xors3d
 
Если бы был другой такой простой редактор костной анимации как милка... Пробовал анимировать в максе - не могу привыкнуть к его управлению и громоздкости

Amatsu 11.02.2011 23:10

Ответ: Тени в Xors3d
 
Кстати, решил ваш пример с анимацией проверить, где кузнецу можно шею сворачивать. Замедлил анимацию - те же подергивания времени от времени, будто фпс проседают на секунду через пять.
з.ы. разрешение экрана 1680х1050, видеокарта Radeon HD4770, драйверы самые последние.
з.з.ы. заметил - если запускать в окне и без вертикальной синхры - все норм.

.Squid 11.02.2011 23:33

Ответ: Тени в Xors3d
 
Да. Такое вполне возможно, если ФПС слишком высок. Парадоксально и смешно, да хД? Тут в моем последнем посте (там, где о "choppy animation") подробнее о причине этого явления и том, как его избежать http://area.xors3d.com/forums/tracker.php?p=1&t=66
В кратце: для синхронизации анимации используется таймер с точностью 1мс, т.к. в реальной более-менее серьезной 3д игре в ближайшие лет 5 скорость обновления одного кадра вряд ли будет меньше 1мс. В мелких тестах кадр как раз обновляется меньше, чем за 1 мс. Поэтому этот таймер в основном возвращает 0мс и лишь иногда иное значение. При нулевом значении анимация просто не проигрывается. Поэтому получается так: анимация - плюем в потолок - плюем в потолок - плюем в потолок - анимация - плюем в потолок - плюем в потолок - плюем в потолок... Из-за этого анимация дергается.
Решение - ограничивать ФПС хотя бы на уровне 500.

Amatsu 11.02.2011 23:35

Ответ: Тени в Xors3d
 
Благодарю, приблизительно о такой синхронизации я и спрашивал, просто не знал как правильно описать :)
Мда, облом:
"You do not have the permission to view the tracker. If you believe this is an error please contact the board administrator." (с)
Нельзя ли вынести сюда это решение, желательно в форме примерного кода?

.Squid 11.02.2011 23:45

Ответ: Тени в Xors3d
 
Схема ограничения частоты обновления такая:
Код:

Const FPS%    = 60
Global period# = 1000 / FPS
Global time%  = MilliSecs() - period
Global Ticks#, elapsed%
While AppRunning()
        nFPS_Int = xGetFPS()
        Repeat
                elapsed = MilliSecs() - time
        Until elapsed
        Ticks = elapsed / period

        For k% = 1 To Ticks
                time = time + period
                GameLogicUpdate() ; тут обновляется вся логика
                xUpdateWorld()      ; тут надо пробовать. Возможно стоит вынести за пределы ограничивающего цикла
        Next
       
        xRenderWorld()
        xFlip()
Wend
End

Вообще подобного кода на оффсайте блитца завались. Правда некоторый может глючить. Не особо разбирался в причинах.

Можно еще твиннинг вкрутить, для того чтобы анимация оставалась плавной при низкой частоте обновления логики.

Но во всяких демках с большим ФПС проблема все равно останется, потому что xRenderWorld() все равно каждый кадр вызывается. Тогда его или в ограничивающий цикл надо засунуть, что перечеркнет весь смысл твиннинга. Или просто delay(2) вставить.

.Squid 11.02.2011 23:46

Ответ: Тени в Xors3d
 
Цитата:

Сообщение от Amatsu (Сообщение 178657)
Мда, облом:
"You do not have the permission to view the tracker. If you believe this is an error please contact the board administrator." (с)
Нельзя ли вынести сюда это решение, желательно в форме примерного кода?

В твоем случае просто вставить Delay(2) в начале главного цикла. А лучше Delay(16) хД.

Amatsu 18.02.2011 22:56

Ответ: Тени в Xors3d
 
Заметил небольшой косяк теней (хотя конечно возможно это косяк b3d-модели, но все же) - если анимируемая модель состоит из нескольких сурфейсов, и один из сурфейсов оказывается вне зоны видимости камеры - его тень замирает, будто останавливается анимация. В то время как остальная модель продолжает двигаться и отбрасывать адекватную тень. Возможно это даже не глюк системы теней, возможно что это сурфейс на самом деле, выпадая из поля зрения камеры прекращает анимироваться. Мой ли это косяк, и если нет - как обойти?
http://images.tvlg.ru/images/15441547220595234869.jpg
з.ы. и есть ли в ксорсе какой-то аналог MeshCullBox? Возможно расширение кулбокса модели помогло бы
з.з.ы. я чувствую скоро меня все будут посылать к черту, бо беспокою по малейшему поводу %D Заранее прошу прощение за свою тупость, если она всему виной

Knightmare 18.02.2011 23:00

Ответ: Тени в Xors3d
 
Да, для невидимых сюрфей1сов пропускается скиннинг. Возможно стоит впилить флаг который насильно анимирует их когда это необходимо.

Amatsu 18.02.2011 23:01

Ответ: Тени в Xors3d
 
Цитата:

Сообщение от Knightmare (Сообщение 179426)
Да, для невидимых сюрфей1сов пропускается скиннинг. Возможно стоит впилить флаг который насильно анимирует их когда это необходимо.

Этот флаг впиливается в конвертере, например пайплайне, или какой-то командой в ксорсе? Если второе - пойду гуглить

Knightmare 18.02.2011 23:02

Ответ: Тени в Xors3d
 
Я говорил о впиливании его в движок.

Amatsu 18.02.2011 23:03

Ответ: Тени в Xors3d
 
Ок, тогда буду ждать апдейта :)

Amatsu 28.02.2011 01:28

Ответ: Тени в Xors3d
 
Скачал февральскую ревизию. Не нашел чего хотел. Можно поинтересоваться, появится ли в ближайшее время фикс для команды анимации, чтобы анимация сурфейсов (пардон) за пределами камеры не прекращалась? Или хотя бы подскажите, как эту проблему решить существующими средствами. Заранее благодарен

И да, еще интересный момент заметил. У меня после обновления теперь при прописывании команды xPhysicsDebugRender 1 скомпилированное приложение молча моментально закрывается. Но тут еще посмотрю, может мой косяк где. Хотя со старой ревизией работало норм

Amatsu 10.03.2011 22:38

Ответ: Тени в Xors3d
 
Скажите плиз, вообще реально использовать тени ксорса при ортографическом рендере камеры? Потому что если использовать их с дефолтными настройками в этом режиме их нехило так колбасит

burovalex 09.12.2012 23:03

Ответ: Тени в Xors3d
 
Тени можно настроить, но они такие тормазнутые даже на дефолте. На сцене 1000 кубиков - фпс 22. Отвожу камеру, проверяю расстояние и отключаю на них тени, но фпс не выше 35...
Код:

        For i=1 To 1000
        If xEntityDistance(camera,sp(i))>70 Then
                xEntityCastShadows(sp(i),light_up,False)
                Else
                xEntityCastShadows(sp(i),light_up,True)
        EndIf
        Next

и на все кубики не накладываются тени
Код:

For i=1 To 1000
        sp(i)=xCreateCube()
        xPositionEntity sp(i),Rnd(-50,50),2,Rnd(-50,50)
        xEntityReceiveShadows(sp(i),light_up,False)
Next

Может я чего то не знаю. Или стоит библу какую-нибудь попробывать?

FREE MAN 09.12.2012 23:08

Ответ: Тени в Xors3d
 
Цитата:

Сообщение от burovalex (Сообщение 246174)
Тени можно настроить, но они такие тормазнутые даже на дефолте. На сцене 1000 кубиков - фпс 22. Отвожу камеру, проверяю расстояние и отключаю на них тени, но фпс не выше 35...
Код:

        For i=1 To 1000
        If xEntityDistance(camera,sp(i))>70 Then
                xEntityCastShadows(sp(i),light_up,False)
                Else
                xEntityCastShadows(sp(i),light_up,True)
        EndIf
        Next

и на все кубики не накладываются тени
Код:

For i=1 To 1000
        sp(i)=xCreateCube()
        xPositionEntity sp(i),Rnd(-50,50),2,Rnd(-50,50)
        xEntityReceiveShadows(sp(i),light_up,False)
Next

Может я чего то не знаю. Или стоит библу какую-нибудь попробывать?

В Xors3d используется техника теней PSSM соответственно чем больше используешь Split Plane тем дороже обходится тени. в общем тебе придется поиграть с настройками теней и прорисовкой камеры XCamerarange 1, 100-500 примерно так и т.д.

pozitiffcat 10.12.2012 17:46

Ответ: Тени в Xors3d
 
А нельзя налету менять настройки, типа если отдалился то "ухудшить тени", ведь из далека один хрен не разберешь?


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

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