问题标签 [optix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nvidia - Nvidia Optix 眼空间交点
如何在 OptiX 程序中计算眼空间交点坐标?
我的研究表明只提供了对象和世界坐标,但我不敢相信没有办法获得眼睛空间坐标。
c++ - 使用带有 Open Asset Import Library (assimp) 的 Nvidia Optix 进行光线追踪 - 渲染多个网格
我正在尝试将 Open Asset Import Library(读取各种 3D 模型文件类型)的多功能性与 NVidia Optix 光线追踪相结合来渲染模型。
到目前为止,只要我正在渲染的模型由单个网格组成,它就可以工作。当我尝试渲染具有多个网格的文件时,我只得到部分结果。我无法缩小问题所在,寻找一些见解。相关代码在这里:
使用 assimp 导入器加载文件并创建 optix 缓冲区:
以及用于创建几何图形和填充缓冲区的相关功能:
在 assimp 的示例文件上运行上述代码(使用 dwarf.x,文件包含 2 个网格)会产生以下结果:
您可以看到仅渲染了第二个网格(矮人的身体)的一部分。我尝试分别渲染每个网格,一次一个,并且它们完全渲染。但是当把它们放在一起时,我明白了。
我认为问题在于创建几何,也许我有这些错误:
或 assimp 后处理标志
(注意上面,我不得不注释掉 JoinIdenticalVertices 因为它给了我一个可怕的错误结果,如下所示):
有没有人能够成功地将 nvidia optix 与开放资产导入库结合起来以渲染具有多个网格的文件?
c++ - 使用 Optix 5 显示 X 粒子
我正在尝试使用 Nvidia Optix Ray-Tracing 显示 250 帧动画。我有这个基本的粒子类:
我正在从搅拌机中生成的 .txt 文件中检索每个粒子的所有信息(位置、大小、颜色和状态)。txt 文件看起来像这样:
我还在迭代帧 x 中的所有粒子,将它们转换为粒子类型的对象(查看上面的结构。)并将它们放入一个看起来像这样的数组中:
其中主数组中的每个数组代表动画的一帧。
所以我不需要使用 c++ 或 Optix 进行任何计算,我只需要在那个颜色的那个位置渲染一个那个大小的粒子。
我认为代码看起来像这样:
我只是错过了渲染它们的步骤。我尝试在网上寻找参考资料,但在 Optix 中的粒子上一无所获。我查看了 optixParticles Sample 的源代码,发现在这种情况下,optix 将粒子渲染为具有“平面”着色的球体,因此在“混合器工作方式”中使用发射着色器的球体。但我找不到比那个样本更多的东西,我也无法理解那个样本本身的部分内容。
我正在尝试以相对简单的方式做的事情吗?如果这问得太多或不清楚,是否有 StackOverflow 家族的网站要求对特定代码的解释?
optix - 如何使用 Optix Context Wrapper 进行 rtPrint
这个问题旨在帮助 NVIDIA OptiX 的初学者(很像我自己)
发生了什么
使用 OptiX 编译示例(随 OptiX 安装提供)时,我试图从其中一个计算机内核打印到控制台,但我不断收到以下错误:
尝试的解决方案
在createContext()
函数内部,在创建上下文的地方,我添加了几行代码来打开调试打印。我添加的代码行是:
这些是产生上述错误的两行。我在上下文对象的实例化之后添加了这些代码行,由下面的代码提供 - 来自原始的 nvidia 示例:
因此,完整的中断代码如下所示:
一些背景资料
我正在尝试修改 optixWhitted 项目,在使用 Eclipse 的 NSight 版本的 CentOS 计算机上工作。
问题
在使用 optixWhitted 代码时,并尝试维护已经布置的代码样式和对象用法......我该如何解决这个问题?
nvidia - NVidia OptiX:在 PathTracer 示例中加载 OBJ
在 SDK 中的路径跟踪器示例中,我想添加一个 OBJ 文件进行跟踪,所以我转到了loadGeometry()
函数,在最后一次创建平行四边形之后,我添加了这个代码块
请注意,这gis
是一个GeometryInstance
向量。
当我运行它时,显示窗口打开,然后立即关闭,我得到以下异常:
如果我注释掉修改后的代码块,它工作正常。
如何将 OBJ 文件加载到跟踪器?我需要在着色器/RT_PROGRAMs 端添加一些东西吗?预先感谢!
PS 我知道该loadMesh()
函数负责处理材料,但由于程序不起作用,我尝试设置一个材料,就像它为所有其他 GeometryInstances 显示的一样,如上面的代码块所示。
optix - OptiX 无法以足够的权限打开磁盘缓存
我使用 OptiX 的程序崩溃并出现以下错误:
这个磁盘缓存在哪里,以便我可以在那里修复权限?
nvidia - OptiX 场景搭建突然很慢
不知什么原因,用 OptiX 构建场景突然变得很慢,即使对于一个有 2 个三角形的微不足道的场景也是如此。这过去需要几毫秒,但现在计算时间超过 1 秒。
可能发生了什么?
cuda - 从 OptiX 内核写入 CUDA 表面
我在玩新的 OptiX-7 版本。为了显示启动结果(从 raygen 编写的简单单色),我创建了一个 OpenGL 纹理,对其进行映射并通过 cuGraphicsSubResourceGetMappedArray 获取映射数组,最后创建一个以该数组为背景的 CUDA 表面。然而,从 OptiX 内核写入表面既不会改变(显示的)纹理,也不会产生错误,而几乎相同的常规 CUDA 内核具有明显的效果。
CUDA 代码:
OptiX 内核:
表面句柄通过启动参数传递:
内核本身执行得很好。OptiX 示例包含一个纹理显示示例,并简单地使用 cudaTextureObject_t。但是,它们也使用普通缓冲区和 PBO 来显示渲染图像。是否根本不可能直接写入 CUDA 表面?
编辑:澄清表面是如何创建的:采用现有的 OpenGL 纹理,我注册并映射它
为简洁起见,所有调用都包含错误检查。
blender - 基元 ID,如果多次使用同一个网格,则不是唯一的
我正在使用 OptiX 开发热工具。我从使用 syoyo 的tinygltf loader的“meshviewer”示例开始。基本上我想导入一个文件,获取基元的数量,然后将交叉点相加。
现在我导入了一个包含两个立方体的文件,每个立方体应该包含 12 个三角形,所以总共 24 个。当我启动我的程序时,加载器只能识别 12 个三角形,但它会渲染 2 个单独的立方体。两个多维数据集的原始 ID 似乎相同。
从搅拌机导出时有解决方法吗?如果我直接理解文档,则单独的立方体被视为同一网格的两个“相同”实例,因此共享原始 ID。我正在使用带有 gltf 导出器的 Blender v2.81。
我是否正确理解了问题?有没有简单的解决方法?如果不是,我将不得不修改 tinygltf 加载器。
提前感谢您的帮助!
blender - 从顶点向外法线
我正在 Optix 中进行热应用,我想导入一个 GLTF 文件,然后从每个基元开始光线。
我不完全理解为存储在 gltf 中的面孔重新分级“正面”和“背面”的文档。有没有正确的方法来使用三角形的三个顶点并使用侧面的叉积来计算向外的法线?如果我的代码按预期工作,我有时会得到一个向内的,有时是一个向外的正常。还是顶点存储的顺序是任意的,因此方向可能会反转?如果我理解正确的话,每张脸也存储了 3 个“法线”。如果我所有的脸都是平的/不弯曲的,我是否应该能够使用其中任何一个而无需计算任何东西?
提前感谢您的帮助!