Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

Корявая прорисовка (Direct3D)   Найти похожие ветки 

 
VolanD666   (2004-12-01 15:43) [0]

Здрасти, программеры.
Вот начал писать свою игру. Типа ходит чувак (от первого лица) по коридору. И все бы хорошо, вот только наверху у стенок какие то зубцы рисуются, а если стенку сделать выше, то зубья становятся острее.
:-O.


 
MeF Dei Corvi ©   (2004-12-01 18:54) [1]


> какие то зубцы рисуются

Дык криво стены рисуешь... Треугольники лишние.


 
XProger ©   (2004-12-01 18:56) [2]

Либо слишком большие числа используешь :)


 
XProger ©   (2004-12-01 18:57) [3]

Я так понял - рачь идёт о "Z-Fighting". Что-то вроде совпадения глубины в Z-Buffer"е


 
MeF Dei Corvi ©   (2004-12-01 19:05) [4]


> VolanD666   (01.12.04 15:43)  

Поясни конкретнее о чем речь. Можно скриншотом.


 
VolanD666   (2004-12-02 05:32) [5]

Не стены рисуются нормально (треугольников хватает). Раньше все работало нормально, но как только изменил ближнюю прорисовку:
D3DXMatrixPerspectiveFovLH (&matProj, D3DX_PI/4, 1.0f, 0.001f, 1000.0f);. Наверху у стен появились искажения.


 
NailMan ©   (2004-12-02 10:20) [6]

VolanD666
Нельзя такое значение в near задавать - теряется точность работы Z-buffer.

Как правило принято устанавливать nearclip в 1.0

---
WBR, NailMan aka 2:5020/3337.13


 
VolanD666   (2004-12-02 13:25) [7]

А вот, мой знакомый писал на Delphi и у него все путем.


 
Darthman ©   (2004-12-02 13:30) [8]

//А вот, мой знакомый писал на Delphi и у него все путем.
Ему повезло, у него видеокарточка была другая.

Ты посчитай сколько у тебя градаций получается от 00.1 до 1000? Ну с шагом 0.01 это выходит минимум 100000 градаций буфера. МИНИМУМ, карточка с этим не справляется. Меняй ближнее отсечение на 1.0


 
VolanD666   (2004-12-02 13:53) [9]

А тогда при подходе к стене можно будет посмотреть за нее.
> Ему повезло, у него видеокарточка была другая.

У меня его откомпиленый проэкт идет и все пашет.


 
Sapersky   (2004-12-02 14:09) [10]

У меня его откомпиленый проэкт идет и все пашет.

Может, он использует 24(32)-битный Z-буфер, а у тебя 16-битный?


 
Sapersky   (2004-12-02 15:28) [11]

Хотя нет, увеличение разрядности не поможет.

Ты посчитай сколько у тебя градаций получается от 00.1 до 1000? Ну с шагом 0.01 это выходит минимум 100000 градаций буфера

Даже хуже.

http://www.mvps.org/directx/articles/using_w-buffers.htm

Если посчитать, как там написано, то получается, что 99.9% точности Z-буфера в данном случае тратится на интервал 0.001..1

Можно, конечно, использовать W-буфер, но он поддерживается не всеми картами, так что лучше ограничить расстояние, на которое можно подходить к стене (зачем 0.001? Если это метры - то вряд ли кто-то сможет подойти к стене на 1 мм :)).


 
VolanD666   (2004-12-03 14:23) [12]

Пробовал менять это число на 2.0:
D3DXMatrixPerspectiveFovLH (&matProj, D3DX_PI/4, 1.0f, 0.001f, 1000.0f);.
Ничего не изменилось. :-(


 
Sapersky   (2004-12-03 18:32) [13]

1) В силу особенностей математики Z-буфера точность при задании NearPlane < 1 уменьшается очень сильно. Примерное представление о том, какой интервал на самом деле задаётся, можно получить переставив все ноли спереди от NearPlane назад к FarPlane :), точнее, разделив FarPlane на NearPlane. Т.е. интервал 0.001 .. 1000 эквивалентен 1 .. 1000000.
2) Распределение точности в Z-буфере нелинейное - чем ближе, тем точнее, грубо говоря, на первые 10% интервала тратится 90% точности.
Поэтому даже при относительно вменяемом интервале 0.001 .. 2 (= 1..2000) вся точность уходит на объекты 0.001 .. 0.01 (много таких? :)), а на остальные почти ничего не остаётся.

Всё это есть в статье по ссылке, которую я давал...


 
VolanD666   (2004-12-04 09:02) [14]

Спасибо, за ссылку. Но я, честно говоря, не дружу с английским языком. :-)
А вообще есть где-нибудь ссылки в интернете по теме: "Как написать свой Doom", а то искал в поисковиках, но не нашел?


 
cyborg ©   (2004-12-04 10:06) [15]


> "Как написать свой Doom"

Пиши по адресу: Дурдом, палата №6
;)


 
Sapersky   (2004-12-04 20:33) [16]

А вообще есть где-нибудь ссылки в интернете по теме: "Как написать свой Doom", а то искал в поисковиках, но не нашел?

Так прямо и искал? :)
Вообще ссылки, в некотором роде, есть. Искать нужно по словам  BSP/PVS и Portal (портал).

На gamedev.ru была статья по BSP.
Или вот ещё, с примерами:
http://www.cs.sun.ac.za/~henri/advgfx.html
Но по-английски...


 
VolanD666   (2004-12-05 07:28) [17]

Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2005.03.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.027 c
14-1108373663
Ega23
2005-02-14 12:34
2005.03.06
Я плакал!!!


3-1107513054
Vantage-10
2005-02-04 13:30
2005.03.06
Обработка SQL запроса в Delphi


14-1108376394
Lamer123
2005-02-14 13:19
2005.03.06
Работа со строками в VBA


3-1107928843
sea_wolf
2005-02-09 09:00
2005.03.06
Представление поля типа binary в dbgrid


1-1108639708
Ivolg
2005-02-17 14:28
2005.03.06
Емуляция TaskBar