光线跟踪中的纹理映射球体

时间:2016-02-10 19:53:54

标签: c++ graphics texture-mapping raytracing

我正在尝试使用带有cimg的.bmp图像来纹理球体,但是它没有正确纹理化。 继承人的纹理图像 texture

这是结果。 result

这是我在交叉点计算颜色的代码。

virtual RGBColor getTexture(Point3D pos){
    //normal of intersection point and sphere
    Vector3D N = this->getNormal(pos);
    N.normalize();


    double u = 0.5 + atan2(N.getY(), N.getX()) / (2 * 3.141592653589793);
    double v = 0.5 - asin(N.getY()) / 3.141592653589793;

    CImg<int> image("pattern.bmp");
    float width = u * 150;//105 is image width
    float height = v * 105;
    float r;
    float g;
    float b;

     r = image(width, height, 0, 0);
     g = image(width, height, 0, 1);
     b = image(width, height, 0, 2);

    return(RGBColor(r,g,b));
}

Pos是交叉点。 任何帮助都是apreciated

0 个答案:

没有答案