标签: vertices

使用顶点数组对象和顶点缓冲区对象

我试图理解这两个,如何使用它们以及它们是如何相关的.假设我想创建一个简单的地形和一个纹理立方体.对于这两个对象,我有三角形顶点的数组,对于立方体,我有一个包含纹理数据的数组.我的问题是:如何使用VAO和VBO来创建和渲染这两个?

  1. 我是否必须为每个对象创建一个VAO和VBO?
  2. 或者应该为每个对象的VBO(顶点,纹理数据等)创建一个VAO?

有许多教程和书籍,但我仍然不知道如何理解和使用这些概念.

opengl buffer vbo vertices vao

32
推荐指数
2
解决办法
1万
查看次数

三个js顶点不会更新

我正在使用three.js r67,顶点似乎没有更新.我订了geometry.dynamic = true,geometry.verticesNeedUpdate = true.圆正在移动,但线是静态的....

有人可以帮帮我吗?

var scene = new THREE.Scene();
var renderer = new THREE.WebGLRenderer();

var g = new THREE.CircleGeometry( 4, 16 );
var m = new THREE.MeshBasicMaterial({color: 0x114949});
var circle = new THREE.Mesh( g, m );

circle.position.x = 2;
circle.position.y = 2;
circle.position.z = -1;
scene.add( circle );

var material = new THREE.LineBasicMaterial({color: 0xDF4949, linewidth: 5});

var geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(0, 0, 0));
geometry.vertices.push(new THREE.Vector3(1, 1, 0));
geometry.verticesNeedUpdate = true;
geometry.dynamic …
Run Code Online (Sandbox Code Playgroud)

geometry dynamic vertices three.js

19
推荐指数
1
解决办法
2万
查看次数

什么是3D矢量?它与3D点有何不同?

在3D游戏数学的上下文中,3D矢量是否与3D点元组(x,y,z)不同?

如果它们不同,那么如何计算给定3d点的矢量?

math 3d vector vertices

11
推荐指数
1
解决办法
1万
查看次数

给定非凸多边形中的大量顶点,我如何找到边缘?

我有一组顶点(称为A),我想找到所有边界顶点,使得此边框顶点集是形状的轮廓.

A中的许多顶点都是多余的,因为它们在形状内部,我想摆脱这些顶点.

我的问题类似于找到顶点边(多边形)的最佳算法,但我需要它来处理非凸多边形的情况.

编辑:澄清:下图是凹多边形.这就是我所说的非凸.如果我对它运行凸包算法,它将不会保留多边形的凹陷部分.(除非我弄错了).

凹多边形

我在多边形的边界内和边界上有一组顶点:[[x1,y1],[x2,y2] ...]我想减少集合,使顶点只是形状的边框轮廓.

concave polygons vertices outline

10
推荐指数
1
解决办法
6058
查看次数

最小化多边形顶点

什么是一个很好的算法来减少多边形中的顶点数量而不改变它看起来非常多的方式?

输入:一个多边形,表示为一个点列表,具有太多的顶点:例如来自鼠标的原始输入.

输出:具有少得多的顶点的多边形,看起来仍然像原始的一样:例如可用于碰撞检测的东西(不一定是凸起的).

编辑:对此的解决方案类似于在图表上找到最佳拟合的多分段线.它在我的算法书中被称为分段最小二乘法.

Edit2:道格拉斯Peucker算法是我真正想要的.

graphics geometry polygon minimize vertices

9
推荐指数
1
解决办法
2401
查看次数

优雅的方式找到立方体的顶点

几乎每个OpenGL教程都允许您实现绘制多维数据集.因此需要立方体的顶点.在示例代码中,我看到了一个定义每个顶点的长列表.但我想计算一个立方体的顶点,而不是使用预先计算的坐标的超长列表.

立方体由八个顶点和十二个三角形组成.顶点由x,y和z定义.三角形由三个顶点的索引定义.

有一种优雅的方法来计算立方体的顶点和元素索引吗?

c++ opengl algorithm cube vertices

9
推荐指数
1
解决办法
2403
查看次数

停止在igraph.plot中重叠的节点/顶点

我有一个节点表要在R中绘制并使用,igraph.plot因为它似乎最适合我的需要.

并非我图中的所有节点都已连接,即整个图形的某些部分可能只包含一对连接的节点.我需要生成一系列节点边缘图,所有这些图都在同一图中表示,其中没有顶点重叠.

我尝试了多种布局,但我认为这是因为并非所有节点都相互连接,他们以这种方式绘制...

有没有人知道在没有节点重叠的情况下绘制这些图的方法?

(我试图在下面包含两张图片,但似乎我需要"声望点":/)

先感谢您!

plot r vertices igraph nodes

9
推荐指数
1
解决办法
2461
查看次数

计算平滑度为 100% 的平滑顶点法线的一般方法

我在网上看了很长时间,找不到这个问题的答案。为简单起见,让我们假设我需要完全平滑一组连接面的法线。我想找到一组向量之间的实际几何平分线,忽略重复的法线并保持三角形汤的准确性。基本上,它需要:

  • 使用三角形汤 - 无论是三个、4 个还是 4000 个三角形,法线仍然需要以几何正确的方式协同工作,而不会偏向于任意区域
  • 忽略重叠(平行)法线 - 如果我有一个立方体的边,它聚集在 3 个三角形中,或者一个三角形的两个边中的每一边都聚集在一个三角形中,最后一侧有 2 个(或更多)个三角形,或者一个有 100 万个三角形只有一侧的三角形,平分线不能改变

我似乎找到的最常见的法线平滑公式是,通过将法线向量相加并除以三来简单地平均它们;例子:

normalize((A + B + C) / 3);
Run Code Online (Sandbox Code Playgroud)

当然除以三是没有用的,这已经代表了人们提出的天真、自以为是的蛮力平均法的氛围;与此有关的问题还在于,即使是三角形汤和平行法线,它也会把时间弄得一团糟。

我似乎发现的另一个评论是保留初始“面”法线,因为它们来自生成它们的常见交叉乘法运算,因为这样它们(有点)相对于三角形的面积加权。在某些情况下,这可能是您想要做的事情,但是我需要纯平分线,因此面积不能影响公式,即使考虑到它,它仍然会被三角汤弄乱。

我看到了一个提到的方法,它说对相邻面之间的角度进行加权,但我似乎无法正确实施该公式 - 要么是那样,要么不是我想要的。然而,这对我来说很难说,因为我找不到一个简洁的解释,而且我的头脑因所有这些浪费的头脑风暴而变得麻木。

有人知道通用公式吗?如果有任何帮助,我正在使用 C++ 和 DirectX11。


编辑:这里有一些类似的问题,描述了一些方法;

还有这篇文章:http : //www.bytehazard.com/articles/vertnorm.html

不幸的是,我尝试的实现不起作用,我找不到关于哪个公式实际上是我需要的一个清晰、简洁的声明。经过反复试验,我终于发现按角度加权是正确的方法,只是我无法正确实现它;因为它现在似乎正在工作,所以我将在下面添加我的实现作为答案。

algorithm 3d vertices normals

9
推荐指数
1
解决办法
7853
查看次数

以 3d 网格作为输入的 tensorflow 神经网络

我正在尝试构建一个神经网络,该网络将 3d 网格的顶点位置作为输入,并输出内部两点的坐标。

出于测试目的,我有一个包含 20 个点的几何数据集,每个点在内部有两个点。

数据集的每个文件都包含等级 2 中顶点的坐标,对象的形状为 [3,20] 数组,结果点的形状为 [3,3]。

我已经建立了一个线性模型,但结果总是非常低 (0,16) ,如果我用 1000、100.000 或 500.000 训练它并不重要

import tensorflow as tf
import numpy as np

objList    = np.load('../testFullTensors/objsArray_00.npy')
guideList  = np.load('..testFullTensors/drvsArray_00.npy')


x  = tf.placeholder(tf.float32, shape=[None, 60])
y_ = tf.placeholder(tf.float32, shape=[None, 6])

W = tf.Variable(tf.zeros([60,6],tf.float32))
b = tf.Variable(tf.zeros([6],tf.float32))

y = tf.matmul(x,W) + b

cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    train_step.run(feed_dict={x: objList, y_: guideList})
    correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
    sess.run(tf.global_variables_initializer())
    print …
Run Code Online (Sandbox Code Playgroud)

3d vertices coordinates neural-network tensorflow

7
推荐指数
1
解决办法
3066
查看次数

如何使用OpenGL创建自定义顶点格式

我正在使用OpenTK编写自己的引擎(基本上只是用于C#的OpenGL绑定,gl*变成GL.*)并且我将存储许多顶点缓冲区,每个顶点缓冲区中有数千个顶点.因此我需要自己的自定义顶点格式,因为带有浮点数的Vec3会占用太多空间.(我在这里谈论数百万个顶点)

我想要做的是用这个布局创建我自己的顶点格式:

Byte 0: Position X
Byte 1: Position Y
Byte 2: Position Z
Byte 3: Texture Coordinate X

Byte 4: Color R
Byte 5: Color G 
Byte 6: Color B
Byte 7: Texture Coordinate Y
Run Code Online (Sandbox Code Playgroud)

以下是顶点C#中的代码:

public struct SmallBlockVertex
{
    public byte PositionX;
    public byte PositionY;
    public byte PositionZ;
    public byte TextureX;

    public byte ColorR;
    public byte ColorG;
    public byte ColorB;
    public byte TextureY;
}
Run Code Online (Sandbox Code Playgroud)

作为每个轴的位置的字节是充足的,因为我只需要32 ^ 3个唯一位置.

我编写了自己的顶点着色器,它将两个vec4作为输入,为每组字节打开.我的顶点着色器是这样的:

attribute vec4 pos_data;
attribute vec4 col_data;

uniform mat4 projection_mat;
uniform …
Run Code Online (Sandbox Code Playgroud)

c# opengl glsl vertices opentk

6
推荐指数
1
解决办法
4006
查看次数