问题标签 [3d-rendering]

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.

0 投票
1 回答
439 浏览

three.js - 使用 OBJLoader2 加载 Obj 以加载顶点颜色

我有一个 .obj 文件,其中包含顶点颜色。也就是说,它的 Texture 没有单独的 .mtl 文件。.obj 文件本身包含每个顶点的颜色。

我想用three.js加载它

我知道我可以使用 .mtl 加载一个普通的 .obj 文件:

但是我的有顶点颜色,所以我发现它可以用 OBJLoader2.js 完成,所以尝试像这样执行它:

但它会抛出错误说

我做错了还是有其他问题。任何人都可以发布确切的代码来加载顶点彩色网格。提前感谢任何试图阅读和解决它的人......

如果有人需要一个顶点彩色网格来工作,我附在下面.. 顶点彩色模型

对于下面的评论,我附上了这张图片:

在此处输入图像描述

0 投票
2 回答
955 浏览

three.js - 在另一个之上显示网格 | 删除重叠 | 渲染订单 | 三.js

我有 2 个对象网格。他们都有一些共同的领域,但并不完全。

我通过将它们添加到屏幕来显示它们......就像另一个上面的网格一样。但是下部网格与顶部网格重叠但我想要实现的是下部网格应始终保持在下方,而不会重叠并为整个顶部网格留出空间。

我经历了这个小提琴..用渲染顺序摆弄

我试过这样的东西..

但我不知道为什么重叠仍然存在..

我试过了...

然后我尝试通过这个 Fiddle ..另一个 Fiddle 但是当我跑进去时,我只得到下层或上层网格。但我想看到两者没有任何重叠..

我将材料 depthTest 设置为 False 但没有任何帮助..

谁能帮我实现我想要的..如果有人不明白我所说的重叠是什么意思,请看下图..

网格图像的重叠 - 示例

感谢所有花时间和精力帮助我的人......

0 投票
0 回答
46 浏览

c++ - 部分渲染体素对象很热?

我确实有 3D array[250][150][250] 代表人体(基本上它是一个体素对象)。每个元素包含从 0 到 255 的值,其中 255 表示一个元素是空的,应该被忽略,而 0-254 代表不同的器官(如皮肤、肺和蚀刻),因此应该绘制。在我的程序中,我编写了应该在 2 个 txt 文件(vertices.txt 和 indices.txt)中绘制的元素数据。vertices.txt 包含应绘制的所有体素顶点的 x、y 和 z 坐标,indices.txt 包含所有索引。

我能够用所有器官渲染整个身体,这不是问题。在此处输入图像描述

vertices.txt 中的示例:

index.txt 中的示例:

我的问题是我不知道如何渲染身体的特定部位(例如:假设我只想渲染肺)。我怎样才能做到这一点?我是否必须为每个单独的器官创建 index.txt 和 vetices.txt(基本上将每个器官作为单独的网格)?

编辑:负责写入 vertices.txt 和 indices.txt 的代码。

网格.cpp

0 投票
0 回答
750 浏览

unity3d - Unity 的通用渲染管道中的雾不亮着色器问题

编辑
我为我最初的问题“如何禁用这种奇怪的雾”找到了一个临时解决方案:禁用照明面板中的雾(天才,对吗?)

但是,由于我以后可能需要雾,而且它的行为不像我预期的那样,所以我仍然需要解决这个问题。

注意:这只发生在指数雾模式,而不是线性。


我在使用统一的通用渲染管道时遇到问题:浅灰色雾,其强度取决于相机航向(参见视频

统一渲染问题 (查看平面几何如何影响雾)

重现的步骤非常简单(或者只是在这里下载项目):

  • 创建通用渲染管线项目
  • 从场景中删除“示例资产”
  • 使用四边形创建地板(创建四边形、旋转、缩放)
  • 创建新材料
    • 着色器:URP/未点亮
    • 底图:黑色

而已。旋转,看看“未照亮”的飞机实际上是如何受到雾的影响,雾的强度取决于相机的航向

  • 旋转四边形与旋转相机的效果相同。
  • 旋转定向光没有效果(天空盒除外)
  • 移除方向光没有任何效果(天空盒除外)
  • 移除后期处理体积会使“雾”在各个方向上都更强,因此相机航向效果不太明显但仍然存在
  • 这发生在游戏模式以及编辑器中
  • 靠近地面使雾更轻
  • 相机位置也有影响(这在使用平面而不是四边形进行测试时更明显)

系统信息:

  • 在统一版本上测试:2019.4.18f1、2019.4.20f1 (LTS)、2020.2.1f1
  • Windows 10 家庭版 19042.804

这可能是 URP/unlit 着色器中的错误吗?

谢谢你的帮助!

0 投票
1 回答
48 浏览

unity3d - Unity 和 Blender 之间的角色渲染方式不同

我有一个 fbx 角色。当我在 Unity 中导入它时,我有这个结果 在此处输入图像描述

而当我在 Blender 中导入相同的文件时,我得到了这个结果。

在此处输入图像描述

在第二张图片中,有很多多边形,我不明白为什么,因为文件与 Unity 相同。如何在 Blender 中获得与 Unity 相同的结果?谢谢你。

0 投票
1 回答
203 浏览

javascript - 导入 Babylonjs 出现错误:Babylonjs 不提供名为“Engine”的导出

我正在尝试制作一个需要 3d 渲染引擎的单页网站。但我不断收到错误:

HTML

Javascript

我已经尝试过的事情:

  1. 尝试从 npm 安装并尝试导入。这根本不起作用,给出错误“无法解析模块说明符“babylonjs”。相对引用必须以“/”、“./”或“../”开头。”
  2. 尝试 CDN

这两种方法都不起作用。我正在用另一个图书馆清洗完全相同的问题。我是新的网络开发,实际上是我的第一个项目。也许我犯了一些非常根本的错误。

同时我以同样的方式导入了three.js,它运行良好。

感谢您提前提供任何帮助。

0 投票
0 回答
50 浏览

shader - 使用 WebGL 着色器对几何图形进行纹理化

我是 WebGL 中纹理和着色的新手。问题是我想用渐变颜色为球体着色,但是当我使用gl_FragColor = vec4(vUv, 0.0, 1.);There are a line on the surface 时带有 vUv 的 Shere 几何

之后,我使用顶点着色器中的位置gl_FragColor = vec4(vPosition, 1.);并得到 8 种不同颜色的结果,这不是我想要的。 带位置的球体几何

我认为问题是顶点着色器的位置没有正确传递。有没有办法解决这个问题?

分段:

顶点:

[编辑] 尝试后gl_FragColor = vec4(abs(vUv.x*2.0-1.0), vUv.y, 0.0, 1.0);

来自@Rabbid76 我得到了顶部和底部的峰值

0 投票
1 回答
86 浏览

python - 如何截取 GLTF 3D 模型服务器端(Python 或 NodeJS)的屏幕截图

如何在 python 中截取 GLTF 模型的屏幕截图?

这个想法是加载和定位 3D 模型并将屏幕截图保存为图像。我想在我将托管模型的服务器上运行它。我找到了一些 javascript 前端解决方案,但我需要它在服务器端。

不幸的是,我还没有找到任何有效的东西......

0 投票
2 回答
76 浏览

python - 关于投影矩阵的问题以及为什么它显示的图片有时会变形

我目前正在研究 3d 渲染,我正在尝试在不添加任何库的情况下完成它(pygame、math、sys 除外)。我做了很多研究,但仍然不能完全理解数学(我在 wikipedia 上使用方法)。它确实输出了正确的坐标,但有时会严重变形。这是结果的样子。我不太了解矩阵,所以我很难调试。我真的可以使用一些帮助来了解它为什么会变形或只是矩阵如何工作,非常感谢!
这是我的代码:

Triangle 类是为了让代码更容易阅读

从 obj 文件中获取顶点和线

Matrix类是为了让矩阵的加减乘法更简单

控制移动和旋转的位置,以及使用投影矩阵的位置。

初始化

我使用的 obj 文件中的数据。

在屏幕上绘制点。

0 投票
0 回答
134 浏览

c++ - 三角形的法线错误

我正在使用 SFML 制作 3D 游戏。我想使用法线来检查三角形是否需要在地形(三角形)网格中绘制。
这是我的代码:

Vector_DotProduct:

向量子:

vec3d 只是一个包含

但是每当我运行程序时,我总是会遇到这个 问题
应该显示的三角形被我的程序认为是“不可见”(它的正常是错误的),但计算对我来说似乎是正确的!
生成三角网格的代码:

wds是网格的大小(边长),scl是每个网格的大小,h是高度图(二维),p是左上角的位置。

我的 3D 点到相机点代码:

rot是相机的旋转,p是相机的位置,pos是我要转移到相机点的3D点。
我已经在这个问题上工作了将近一个星期,但似乎没有任何效果。
如果你们能找到问题,那将有很大的帮助。提前致谢!

完整代码

Init.h:

Noise.h:噪声函数

噪声.cpp:

结构.h:

Terrain.h:地形生成

地形.cpp:

Camera.h:相机类,get3dcoord获取相机点,get2dcoord获取屏幕点

相机.cpp:

3D引擎.h:主要

3D引擎.cpp:

法线错误的三角形之一:

点积错误的三角形之一: