Рисование примитивов XNA
Вложений: 4
Привет!
У меня возникла проблема с коректной отрисовкой примитивов, а точнее полигональной сеткой: Вложение 13111Вложение 13112 На рисунках видно не коректную работу AlphaBlending... И еще неверное количество отрисованых треугольников... Вот код метода построения полигональной сетки: Код:
public Vector3 Initialize3DMesh(int width, int height, int depth) Код:
protected override void LoadContent() Вложение 13113Вложение 13114 Ну и естественно подходим к блоку Draw: Код:
protected override void Draw(GameTime gameTime) Код:
return float4(1,1,1,0.1f); Почему так? И как исправить плохой AlphaBlending??? |
Ответ: Рисование примитивов XNA
полигоны надо сортировать от дальних к ближним, чтобы альфа работала
учитывая что они у тебя пересекаются все друг другом... то придётся изначально в геометрии каждый разделить на кучу маленьких полигонов, полученных при пересечениях и сортировать уже их либо авось сойдёт просто сортировать и рендерить без записи Z |
Ответ: Рисование примитивов XNA
Я бы попробовал выключить zwrite и рисовать в два прохода - сначала внутренние грани, потом наружные.
|
Ответ: Рисование примитивов XNA
Вложений: 2
Цитата:
2. А как ето без записи Z??? Цитата:
Код:
GraphicsDevice.RenderState.CullMode = CullMode.CullClockwiseFace; Как решить проблему с неверной отрисовкой полигонов? Когда я попробовал сделать так: Код:
private void DrawTriangleStrip(Vector3 sizes) Вложение 13117Вложение 13118 Что здесь не так я не понимаю... Прежняя версия DrawTriangleStrip() на мой взгляд правильная, но неправильно работает... Посоветуйте мне что нибудь на счет етого...:dontknow: |
Ответ: Рисование примитивов XNA
Цитата:
UPD: может тут про сорировку найдешь что-то полезное. |
Ответ: Рисование примитивов XNA
Вложений: 3
Благодарю тебя PAX за хорошие советы!
Дело в том что я на ету полигональную сетку буду клеить 3Д текстуру, так как метод предложеный в VolumeRayCasting_101 - 202 мне не подходит. А с полигональной сеткой работает: Вложение 13119Вложение 13120 Код шейдера выглядит: Код:
float4x4 WorldViewProj; ...Если камеру опустить пониже: Вложение 13122 Видно неудавшиеся попытки отрисоватса следующим слоям после первого... А ето никуда не годится!:( |
Ответ: Рисование примитивов XNA
Вложений: 2
Я пробовал отключать Z - buffer вот результат:
Код:
GraphicsDevice.RenderState.DepthBufferWriteEnable = true; Код:
GraphicsDevice.RenderState.DepthBufferWriteEnable = false; Постоянно изменяется последовательность отображаемых слоёв. Вернее не последовательность, а приоритет отображения (один момент все хорошо, второй - видима часть внутрених слоёв, третий - задних и т. д. в произвольном порядке) Как ето можно исправить? |
Ответ: Рисование примитивов XNA
Сортировка тебя спасет
|
Ответ: Рисование примитивов XNA
Вложений: 1
Привет!
Посмотрел что такое BSP и решыл отказатса от доработки подобной полигональной сетки... Но увидил другую! :) На вид оч проста. Но как ее зделать не знаю :dontknow: Вот: Вложение 13226 Как можна оптимально сделать последовательность полигонов внутри бокса, так чтобы все полигоны отрисововались перпендикулярно к камере?? Помогите пожалуйста! |
Ответ: Рисование примитивов XNA
Цитата:
|
Ответ: Рисование примитивов XNA
Вложений: 2
Цитата:
Но суть не в етом. Меня больше всего беспокоит как релизовать постоянное перестроение етих "плоскостей" или полигонов, как вам удобней, ограниченых гранями бокса при передвижении камеры. Ето что придетса перетаскивать каждую точку каждого полигона в определенное место что вычисляетса какой то страшной матиматической формулой?:?? Вложение 13240Вложение 13241 Помогите! Пишите все что придет на ум... |
Ответ: Рисование примитивов XNA
Так у тебя же вроде не полуичлось создать 3d текстуру? как ты планируешь на такие плигоны, ориентированные на камеру свою текстуру/текстуры вешать.
Я предположил, что ты хочешь разбить свою модель на части и отсортировать их. Значит я ошибся и не так понял, т.к. по скриншоту понятно не было. Если бы я сам хотел решить такую задачу, то я бы поступил следующим образом: 1. Задал бы расстояние мужду плоскостями. 2. Для каждой грани имеющихся полигонов посчитал точки, лежащие на гранях, соответствующие шагам плоскостей. 3. Объединил бы все найденные точки в группы по удаленности и составил бы для каждой группы новые полигоны. 4. Вместе с этим делом надо было бы считать uvw с трехмерной текстуры. 5. Далее отрисовка. Но сначала я бы погуглил и поискал алгоритмы, релизующие такой принцип. |
Ответ: Рисование примитивов XNA
Цитата:
Спасибо за совет! Дело в том, что я не знаю как називаетса такой тип построения полигональной сетки. Но если найду, сам выкладу и распишу все как надо...:ok: Есть чёто похожое но не то: http://www.xnadev.ru/articles.php?article_id=12 Тем кто знает больше - пишите! Не стесняйтесь.. :rolleyes: |
Часовой пояс GMT +4, время: 06:23. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot