Сфера затенена только на полпути - трассировка лучей - PullRequest
0 голосов
/ 02 ноября 2019

Я делаю трассировку лучей с наложением текстур на сферу, но мой вывод делится на две отдельные части. Верхние части начинают текстурироваться, а затем почему-то останавливаются на полпути. Я думаю, что все делаю правильно ...

Это код для получения координат текстуры

float_2 get_t_coords(vector p, int ppm_h, int ppm_w) {
        // p is the intersect for ray/sphere
        vector N = get_normal(p).normalize() * -1; // the -ve is to make it not mirrored
        auto phi = acos(N.X);
        auto theta = atan(N.Z/N.Y);
        if(theta < 0)
            theta += 2*M_PI;
        else {}
        auto u = floor((theta/(2*M_PI))*(ppm_h-1));
        auto v = floor((phi/M_PI)*(ppm_w-1));
        return float_2(u, v); // u, v coordinates
    }

Вот мой код, который читает в ppm-файле - проблема может быть здесьно я не уверен

vector** arr[ppm_w]; // definition globally 
arr[tex_list] = new vector*[ppm_w];
        for(int i = 0; i < ppm_h; i++) {
            arr[tex_list][i]= new vector[ppm_w];
            for (int j = 0; j < ppm_w; j++) {
                ifs >> r >> g >> b;
                vector c = vector(r, g, b);
                arr[tex_list][i][j] = c;
            }
        }

Первая часть возвращает отображение u, v, которое извлекается в arr для значения i, j ... любая помощь! спасибо See sphere image

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...