首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过optix实例在obj模型上绘制纹理

如何通过optix实例在obj模型上绘制纹理
EN

Stack Overflow用户
提问于 2015-12-30 07:04:10
回答 1查看 491关注 0票数 1

我对optix和cuda很陌生。我试图修改optix示例,以提供一个带有射线跟踪的3D模型。我修改了"progressivePhotonMap“示例。由于缺乏optix/cuda知识,我不知道如何在3D模型上绘制纹理,任何熟悉SDK示例的人都可以帮助我吗?

我读了其他的画纹理的例子,如"swimmingShark“或”烹饪“,并试图找出使用的线索。然而,这些例子似乎有不同的方式来绘制纹理。

从现在开始,我知道我必须在cpp文件中加载纹理。

代码语言:javascript
复制
GeometryInstance instance = m_context->createGeometryInstance( mesh, &m_material, &m_material+1 );
instance["diffuse_map"]->setTextureSampler(loadTexture( m_context, ... );

并在cuda文件中创建TextureSampler。

代码语言:javascript
复制
rtTextureSampler<float4, 2>      diffuse_map; // Corresponds to OBJ mtl params

然后给他们发短信来画,像这样,

代码语言:javascript
复制
float3 Kd = make_float3( tex2D( diffuse_map, texcoord.x*diffuse_map_scale, texcoord.y*diffuse_map_scale ) );

但是,我无法找到texcoord在cuda文件中获取纹理坐标数据的位置。在.cpp文件中应该有这样的代码

代码语言:javascript
复制
GI["texcoord"]->setBuffer(texcoord)

有人能教我纹理坐标数据是从哪里得到的吗?如何将坐标数据和纹理数据匹配起来,用光线追踪来表示三维模型?我在谷歌找不到教程,我真的需要帮助或指导才能达到我的目标。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-03 09:39:01

你应该先读一读OptiX文档。特别是关于属性变量的段落。

texcoord变量是表单的一个属性。

代码语言:javascript
复制
rtDeclareVariable( float3, texcoord, attribute texcoord );

这是在交汇程序中计算的,并传递到最近的命中程序(属性被设计为将数据从交点传递到阴影点)。

简单回答:它被设置为另一个CUDA函数,从概念上计算该行所需的一些数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34524603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档