forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   ARenderEntity и ZBuffer (http://forum.boolean.name/showthread.php?t=5674)

moka 31.01.2008 16:10

Ответ: ARenderEntity и ZBuffer
 
Нормали влияют полюбому :))) Тут как никрути.
Кубемапа проецируется таким способом: вычесляется вектор наклона между позицией камеры и вершины, затем поворачивается исходя из нормали, таким образом мы имеет отражение кубемапой.
В случае с Скайбоксом, там только вектор относительно вершинам (если в пиксельном, то пикселям).

HolyDel 31.01.2008 16:43

Ответ: ARenderEntity и ZBuffer
 
при чем здесь нормали?
яж сделал без вообще каких либо нормалей сферическое отрашение.
и кубическое будет точно таким же.
влияет только позиция вершины.

правка: вот статья, правда это жила, но все равно, но все равно:
http://steps3d.narod.ru/tutorials/cu...-tutorial.html

tormoz 31.01.2008 17:54

Ответ: ARenderEntity и ZBuffer
 
Опять не понял проблемы
1 сделай скайбокс маленьким
2 помести в поз. камеры (это в цикле)
3 поставь ордер больше 0

все
это никаким боком не затронет отсечения ентити по растоянию

HolyDel 31.01.2008 17:56

Ответ: ARenderEntity и ZBuffer
 
проблема в том - что будет отрисовываться геометрия, которую я гарантированно не увижу.
а может и нет.

tormoz 31.01.2008 19:17

Ответ: ARenderEntity и ZBuffer
 
Не будет
Скайбокс никак не повлияет на отрисовку других ентити

зы. что за танки на 25 к поли ?

HolyDel 31.01.2008 20:04

Ответ: ARenderEntity и ZBuffer
 
25к поли это для примера.
вроде должно сработать.

CRASHER 29.06.2009 22:13

Ответ: ARenderEntity и ZBuffer
 
А у меня вот такая проблемка, отражение в воде.
Здесь загружаю стороны для водного скайбокса. Когда над водой нахожусь всё норм, но под водой он отражает дно, что и немудрено.

Код:

                texturesize=TextureWidth(tex)
                CameraViewport camera,0,0,texturesize,texturesize
                SetCubeFace tex,0:RotateEntity camera,0,-90,0:RenderWorld;PE
                CopyRect 0,0,texturesize,texturesize,0,0,BackBuffer(),TextureBuffer(tex)
                SetCubeFace tex,1:RotateEntity camera,0,0,0:RenderWorld;PR
                CopyRect 0,0,texturesize,texturesize,0,0,BackBuffer(),TextureBuffer(tex)
                SetCubeFace tex,2:RotateEntity camera,0,90,0:        RenderWorld;Z
                CopyRect 0,0,texturesize,texturesize,0,0,BackBuffer(),TextureBuffer(tex)
                SetCubeFace tex,3:RotateEntity camera,0,180,0:        RenderWorld;L
                CopyRect 0,0,texturesize,texturesize,0,0,BackBuffer(),TextureBuffer(tex)
                SetCubeFace tex,4:RotateEntity camera,90,0,0:        RenderWorld
                CopyRect 0,0,texturesize,texturesize,0,0,BackBuffer(),TextureBuffer(tex)
                SetCubeFace tex,5:RotateEntity camera,-90,0,0:        RenderWorld
                CopyRect 0,0,texturesize,texturesize,0,0,BackBuffer(),TextureBuffer(tex)

Мне же надо чтобы видно было тоже самое, когда нет поверхности воды.
Только это должно отображаться на водной глади.
Здесь перевернул стороны по икс и вродебы всё заработало, но отражение под водой отражает зеркально в сторону (вправо в моём случае) то что я вижу на берегу.

Код:

                texturesize=TextureWidth(tex)
                CameraViewport camera,0,0,texturesize,texturesize
                SetCubeFace tex,0:RotateEntity camera,180,-90,0:RenderWorld;PE
                CopyRect 0,0,texturesize,texturesize,0,0,BackBuffer(),TextureBuffer(tex)
                SetCubeFace tex,1:RotateEntity camera,180,0,0:RenderWorld;PR
                CopyRect 0,0,texturesize,texturesize,0,0,BackBuffer(),TextureBuffer(tex)
                SetCubeFace tex,2:RotateEntity camera,180,90,0:        RenderWorld;Z
                CopyRect 0,0,texturesize,texturesize,0,0,BackBuffer(),TextureBuffer(tex)
                SetCubeFace tex,3:RotateEntity camera,180,180,0:        RenderWorld;L
                CopyRect 0,0,texturesize,texturesize,0,0,BackBuffer(),TextureBuffer(tex)
                SetCubeFace tex,4:RotateEntity camera,90,0,0:        RenderWorld
                CopyRect 0,0,texturesize,texturesize,0,0,BackBuffer(),TextureBuffer(tex)
                SetCubeFace tex,5:RotateEntity camera,-90,0,0:        RenderWorld
                CopyRect 0,0,texturesize,texturesize,0,0,BackBuffer(),TextureBuffer(tex)

как убрать отражение в сторону?
Перепробовал много чего , вертел стороны по всякому, не помогает. Подскажите пожалуст:)
Скрин проблемы


Справа отражение под водой, а слева терейн который видно сквозь воду.

CRASHER 01.07.2009 19:29

Ответ: ARenderEntity и ZBuffer
 
Ну что? никто ничего не подскажет? Мне тему отдельную создавать чтоль :)

ABTOMAT 01.07.2009 19:55

Ответ: ARenderEntity и ZBuffer
 
Хз я уж давно Ашадов не юзаю. Заведи новую, может, Андрей ответит. (он тут бывает иногда)

CRASHER 02.07.2009 05:42

Ответ: ARenderEntity и ZBuffer
 
Это не Ашодоу :)
Это полностью на блитце написано

SKA_DIMKA 02.07.2009 09:58

Ответ: ARenderEntity и ZBuffer
 
CRASHER да тут все просто, у тебя это происходит из за SetCubeMode, сделай что то вопщем вроде того...надеюсь там все понятно:)

CubeTexture-текста кубмапы
Water-меш воды(плоскость)
Camera-камера

p.s Единственное что вставь этот кусок кода прям в начале той функции что писал то есть перед рендером кубмапы должно работать;)

Код:

If EntityY#(camera) > EntityY#( water)
SetCubeMode CubeTexture,1
Else
SetCubeMode CubeTexture,3
EndIf



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

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