Нужна помощь в преобразовании псевдокода в C # - PullRequest
1 голос
/ 22 июля 2011

Я работал над созданием икосферы, и почти закончил с этим.

Сейчас я пытаюсь сделать так, чтобы любые треугольники, не обращенные к камере, не добавлялись в список рисования, потому что я имею дело с большим количеством треугольников и заполняюбуфер вершин.Мне удалось сделать так, чтобы треугольники, обращенные к исходному положению камеры, были скрыты (см. Прикрепленные изображения), но скрытые треугольники не обновляются, когда я перемещаю камеру.

Вот два изображения, показывающие это:

http://i41.photobucket.com/albums/e262/cstgirllover/Cho/IcosphereCulledFront.png

http://i41.photobucket.com/albums/e262/cstgirllover/Cho/IcosphereCulledSide.png

Я использовал (псевдо) код с этого сайта, чтобы помочь мне продвинуться дальше:

http://decadeengine.blogspot.com/2011/03/remove-back-facing-patches-before.html

но я не могу найти соответствующий код для этого:

p_pGraphics->get_Matrix(eModelView)

Это последний фрагмент кода на странице, который устраняет проблему, с которой я столкнулся.,

Мой окружающий код выглядит следующим образом:

public float isFacing(Vector3 pos1, Vector3 pos2, Vector3 pos3, Camera dotCamera)
    {
        Vector3 temp1 = CalculateNormal(pos1, pos2, pos3);

        float dotp = Vector3.Dot(temp1, dotCamera.GetDirection * _________);
        return dotp;

    }

Эквивалентный код необходимо вводить после "dotCamera.GetDirection *"

Ответы [ 2 ]

0 голосов
/ 22 июля 2011

Это не псевдокод. Недостаточно информации, чтобы дать четкий ответ, но вы пробовали это?

float dotp = Vector3.Dot(temp1, dotCamera.GetDirection * p_pGraphics.get_Matrix(eModelView));
0 голосов
/ 22 июля 2011

Я думаю, этот фрагмент кода будет зависеть от того, какой 3d движок вы используете. эффективно то, что он делает, чтобы попытаться получить матрицу, представляющую текущее вращение / положение представления.

если вы нацелены на XNA, вам может пригодиться Вращение и перемещение :

...