如何通过 optix 示例在 obj 模型上绘制纹理
how to draw texture on obj model through optix example
我对 optix 和 cuda 很陌生。
我正在尝试修改 optix SDK 示例以呈现具有光线追踪的 3D 模型。我修改了 "progressivePhotonMap" 示例。由于optix/cuda知识匮乏,不知道如何在3D模型上绘制贴图,有熟悉SDK示例的大神能帮帮我吗?
我阅读了其他绘图纹理示例,例如 "swimmingShark" 或 "cook",并尝试找出使用线索。然而,这些例子似乎有不同的方式来绘制纹理。
从现在开始,我知道我必须在 cpp 文件中加载纹理
GeometryInstance instance = m_context->createGeometryInstance( mesh, &m_material, &m_material+1 );
instance["diffuse_map"]->setTextureSampler(loadTexture( m_context, ... );
并在cuda文件中创建TextureSampler
rtTextureSampler<float4, 2> diffuse_map; // Corresponds to OBJ mtl params
,然后给他们texcoord来画,像这样,
float3 Kd = make_float3( tex2D( diffuse_map, texcoord.x*diffuse_map_scale, texcoord.y*diffuse_map_scale ) );
但是,我在cuda文件中找不到texcoord获取纹理坐标数据的地方。
.cpp 文件中似乎应该有这样的代码
GI["texcoord"]->setBuffer(texcoord)
谁能教我texcoord在哪里获取纹理坐标数据,以及如何匹配坐标数据和纹理以使用光线追踪呈现3D模型?
我在 google 中找不到教程,我真的需要帮助或指导才能实现我的目标。谢谢。
您应该先阅读 OptiX documentation。特别是关于属性变量.
的段落
IIRC texcoord
变量是表单的一个属性
rtDeclareVariable( float3, texcoord, attribute texcoord );
在交点程序中计算并传递给最近的命中程序(属性旨在将数据从交点传递到着色点)。
简短回答:它被设置到另一个 CUDA 函数中,从概念上讲,该函数计算该行所需的一些数据。
我对 optix 和 cuda 很陌生。 我正在尝试修改 optix SDK 示例以呈现具有光线追踪的 3D 模型。我修改了 "progressivePhotonMap" 示例。由于optix/cuda知识匮乏,不知道如何在3D模型上绘制贴图,有熟悉SDK示例的大神能帮帮我吗?
我阅读了其他绘图纹理示例,例如 "swimmingShark" 或 "cook",并尝试找出使用线索。然而,这些例子似乎有不同的方式来绘制纹理。
从现在开始,我知道我必须在 cpp 文件中加载纹理
GeometryInstance instance = m_context->createGeometryInstance( mesh, &m_material, &m_material+1 );
instance["diffuse_map"]->setTextureSampler(loadTexture( m_context, ... );
并在cuda文件中创建TextureSampler
rtTextureSampler<float4, 2> diffuse_map; // Corresponds to OBJ mtl params
,然后给他们texcoord来画,像这样,
float3 Kd = make_float3( tex2D( diffuse_map, texcoord.x*diffuse_map_scale, texcoord.y*diffuse_map_scale ) );
但是,我在cuda文件中找不到texcoord获取纹理坐标数据的地方。 .cpp 文件中似乎应该有这样的代码
GI["texcoord"]->setBuffer(texcoord)
谁能教我texcoord在哪里获取纹理坐标数据,以及如何匹配坐标数据和纹理以使用光线追踪呈现3D模型? 我在 google 中找不到教程,我真的需要帮助或指导才能实现我的目标。谢谢。
您应该先阅读 OptiX documentation。特别是关于属性变量.
的段落IIRC texcoord
变量是表单的一个属性
rtDeclareVariable( float3, texcoord, attribute texcoord );
在交点程序中计算并传递给最近的命中程序(属性旨在将数据从交点传递到着色点)。
简短回答:它被设置到另一个 CUDA 函数中,从概念上讲,该函数计算该行所需的一些数据。