问题标签 [vertex]
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.
javascript - 如何在 WebGL 中为对象设置动画(修改特定顶点而不是完整变换)
好的,
我是 3D 图形的新手,我想为模型中的单个特定顶点设置动画(不是整个模型变换)。我的脚本主要基于 NEHE webgl 教程。在本教程中,所有对象顶点都存储在缓冲区中,该缓冲区在程序第一次运行时初始化一次。下面是初始化代码: *注意 vertices 包含一个顶点数组
现在因为这些是在开始时初始化的,显然更改顶点数组将无济于事。所以我想知道如何在实时修改顶点的同时保持足够高效以平稳运行的最佳方法是什么。
是否可以以某种方式重新绑定缓冲区,例如在每个动画滴答时再次运行此代码?
干杯,J
c++ - 如何正确更新 DirectX 10 中的顶点缓冲区
对于一点背景:我正在使用 C++ 进行一个项目,在该项目中我试图根据实时配置文件数据绘制对象的 3D 表示。分析数据是从外部分析硬件收集的。该系统以每秒 300 次的速度沿着一个对象移动,为我的软件提供了一个剖面切片。每个切片由一个 ~8000 个 XY 点的列表组成。轮廓仪的运动由编码器记录。编码器信息提供了扫描的第三维。
另一个需要注意的重要事项是分析器可能会在对象上来回移动。发生这种情况时,我想用新的切片替换以前读取/绘制的切片(基于编码器位置)。到目前为止,我正在使用按编码器计数存储的切片循环缓冲区来实现这一点。这也意味着当缓冲区填满并开始覆盖旧切片时,我将要丢弃切片。为了在屏幕上显示适当数量的主题 - 我需要一次绘制 1000 个剖面数据。现在我将对象渲染为点云。将来我们可能会尝试附加相邻的切片并渲染为三角形列表。
我是 DirectX 的新手,但是使用书籍和在线示例,我已经到了在 3D 中绘制对象的地步,但我确信我没有有效/正确地使用顶点缓冲区。我发现的大多数示例都适用于非常静态的模型。因此,他们倾向于使用其点列表创建单个顶点缓冲区,然后仅通过矩阵变换进行操作。另一方面,当我从我们的硬件中检索配置文件数据时,我将非常快速地更新场景。
目前,我正在为我读入的每个切片创建一个新的顶点缓冲区。当我绘制场景时,我循环遍历最多 1000 个缓冲区的列表,并为每个缓冲区调用 Draw()。我注意到,如果我将一次绘制的顶点缓冲区数量减少一半,我的 FPS 会显着提高,而将每个缓冲区的顶点点数量减半时几乎没有改善 - 所以我认为这表明多个顶点缓冲区不是解决这个问题的正确方法。
所以对于我的问题的胆量......我想知道当顶点变化如此频繁时,我是否可以将所有这些顶点放在一个顶点缓冲区中。我可以更新现有顶点缓冲区中的点吗?还是应该在每次更新场景时重新创建一个全新的缓冲区?最后要记住的一件事是,硬件中每个切片的点数会有所不同 - 因此,在覆盖以前的切片时,新切片的点数可能比被替换的切片多或少。
谢谢你的时间。任何建议将不胜感激!
opengl - opengl vbo 纹理
我仍然是 vbo 的初学者,我想渲染一个 collada 模型。从 cae 文件中获取有关顶点、法线和纹理以及顶点、法线和纹理的索引的所有所需信息之后,然后我将它们作为模型对象放在内存中。剩下的就是如何使用带有纹理的 vbo 来渲染这个对象。我设法通过获取顶点和索引成功地渲染对象,然后在 vbo 渲染的情况下应用绘图元素。但是,当我尝试渲染纹理时,使用显示列表渲染它们时会失败,因为我正在通过每个三角形并根据顶点索引和纹理索引正确应用顶点和纹理坐标。那么如何应用在 vbo 中的对象中找到的纹理索引以正确渲染纹理?
这是该项目的代码:
c# - 使用 List 和 Stack 在 C# 中实现深度优先搜索
我想创建一个深度优先搜索,我已经取得了一定的成功。
到目前为止,这是我的代码(除了我的构造函数,请注意 Vertex 和 Edge 类仅包含属性,此处不重要发布):
它的工作方式是访问所有顶点,但顺序不正确。
以下是我的访问方式与维基百科的比较:
它似乎我的转过身来,从右到左开始。
你知道是什么原因造成的吗?(也将不胜感激任何关于我的实施的建议)
编辑:我得到了答案,但仍想显示 GetConnectedVertices 方法的最终结果:
opengl - OpenGL:使用顶点着色器添加顶点
请告诉我,如何在顶点着色器中添加新顶点?
c++ - 在 VCG 中细化网格
有没有人在VCG 库中进行 trimesh 精炼?我会将其添加为标签,但我还没有足够高的声誉。每次我包含任何精炼库时,都会出现以下错误:
这是在这条线上:
包含它的定义(请原谅巨型 c/p)如下所示:
我的顶点、面和网格声明如下:
所以我不确定里面是否有我误解的东西。我在代码的其他地方使用了 myMesh::FacePointer,我认为模板堆中有些东西我丢失了。这一切都很好(即编译并执行它应该做的),直到我尝试包含refine.h。非常感谢任何具有 VCG 经验的人提供的任何建议。
c - 更改示例中的 OpenGL 顶点属性
我正在使用本教程/示例在 iPhone 上进行一些基本的对象跟踪。一切正常,我什至对性能进行了很多调整,但我仍然遇到一个问题。
基本问题是我对 OpenGL 的理解不够好,我应该因为可耻地获取示例代码并将其变成对我有用的东西而受到惩罚。事实上,我正在受到惩罚;
该示例展示了如何(使用着色器)将 iPhone 的相机渲染为屏幕外纹理,以便能够对其进行处理并将其显示在屏幕上。现在我发现它使用顶点属性数组来绘制纹理/图层(尽管我在谷歌搜索过,但我几乎不理解这个原理)。
顶点数组如下:
我还发现这些顶点属性可以改变绘制纹理的方向。纹理现在是纵向绘制的,这意味着如果我将 iPhone 保持为横向(我想要),并让视图旋转,我在屏幕上看到的一切都是一个 90 度角的相机。
我认为我将问题缩小到足以归咎于这些顶点,并且我一直在弄乱它们的值,但没有任何可接受的结果。
有没有人可以帮我在风景中画出纹理?
PS:如果我反转 'squareVerticles' 的值,我可以获得 180 度旋转的图片。但我希望纹理旋转 90 度,而不是 180 度。
c++ - 建模最短路径算法时的队列问题
我有队列问题。建模一个图,我正在用 C++ 做一个最短路径算法。
当我回到这个声明时,我while (!q.empty())
的前面发生了变化。vertex*
你能弄清楚为什么吗?
getNeighbours() 来了
c++ - 多参数类模板和我的“顶点”类
我已经定义了一个“顶点”类,当它组合在一起时,就形成了一个图形。这些顶点在一端接收输入并在另一端产生输出(这两个端都可以有此顶点类的其他实例的 0、1 或多个“订阅”)传入和传出数据的类型都独立于每个其他 和 被指定为模板参数,因为这些顶点必须对各种输入/输出类型进行操作。
所以在代码中变成:
在发送接收到的数据之前,顶点可以应用过滤器函数来转换/过滤数据,然后再将其再次发送回其列表订阅者。该函数被声明为纯虚函数,因为它的功能取决于从该虚拟顶点基类继承的特化类的种类。
这意味着过滤器被声明为:
当然,我想将多个顶点相互链接在一起。以最简单的形式考虑这种链接,其中每个顶点的输入和输出都连接到另一个顶点的输入/输出:
(ClassX)vertex1(int) --> (int)vertex2(std::string) --> (std::string)vertex3(OtherClassOrType) -->...
考虑到这一点,给定示例的问题陈述如下:
vertex2 必须将 vertex1 列为订阅者并将其自身订阅到 vertex3。为了跟踪所有这些订阅,顶点保存一组指向其所有发布者和订阅者的指针:
订阅我们的顶点需要将其传入数据类型与我们的传出数据类型匹配,但我们不关心订阅者的传出数据类型,因为它与我们无关。这同样适用于我们发布者的传入数据类型。
不幸的是,我似乎无法弄清楚如何指定这一点。我已经摆弄了 boost::any (不会编译),void 指针(不会编译),使用函数模板而不是类模板(由于虚拟过滤器功能而无法工作)......但我什么都没有能想到作品。
所以简而言之,我正在寻找一种将“ DontCareType ”类型作为模板参数的方法,如果可能的话,这基本上是一种表达“我标记为'我不在乎的模板参数”的方式' 可以是任何类型,因为无论如何我都不使用它的数据”
作为获得可行解决方案的最后手段,我还在考虑使用一种“VertexData”类型的选项,该类型必须是顶点中使用的任何传入或传出数据类型的基类。这会有帮助吗?
当然也欢迎任何其他使之可行的建议。