我试图理解这两个,如何使用它们以及它们是如何相关的.假设我想创建一个简单的地形和一个纹理立方体.对于这两个对象,我有三角形顶点的数组,对于立方体,我有一个包含纹理数据的数组.我的问题是:如何使用VAO和VBO来创建和渲染这两个?
有许多教程和书籍,但我仍然不知道如何理解和使用这些概念.
我正在使用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) 在3D游戏数学的上下文中,3D矢量是否与3D点元组(x,y,z)不同?
如果它们不同,那么如何计算给定3d点的矢量?
我有一组顶点(称为A),我想找到所有边界顶点,使得此边框顶点集是形状的轮廓.
A中的许多顶点都是多余的,因为它们在形状内部,我想摆脱这些顶点.
我的问题类似于找到顶点边(多边形)的最佳算法,但我需要它来处理非凸多边形的情况.
编辑:澄清:下图是凹多边形.这就是我所说的非凸.如果我对它运行凸包算法,它将不会保留多边形的凹陷部分.(除非我弄错了).
![]()
我在多边形的边界内和边界上有一组顶点:[[x1,y1],[x2,y2] ...]我想减少集合,使顶点只是形状的边框轮廓.
什么是一个很好的算法来减少多边形中的顶点数量而不改变它看起来非常多的方式?
输入:一个多边形,表示为一个点列表,具有太多的顶点:例如来自鼠标的原始输入.
输出:具有少得多的顶点的多边形,看起来仍然像原始的一样:例如可用于碰撞检测的东西(不一定是凸起的).
编辑:对此的解决方案类似于在图表上找到最佳拟合的多分段线.它在我的算法书中被称为分段最小二乘法.
Edit2:道格拉斯Peucker算法是我真正想要的.
几乎每个OpenGL教程都允许您实现绘制多维数据集.因此需要立方体的顶点.在示例代码中,我看到了一个定义每个顶点的长列表.但我想计算一个立方体的顶点,而不是使用预先计算的坐标的超长列表.
立方体由八个顶点和十二个三角形组成.顶点由x,y和z定义.三角形由三个顶点的索引定义.
有一种优雅的方法来计算立方体的顶点和元素索引吗?
我有一个节点表要在R中绘制并使用,igraph.plot因为它似乎最适合我的需要.
并非我图中的所有节点都已连接,即整个图形的某些部分可能只包含一对连接的节点.我需要生成一系列节点边缘图,所有这些图都在同一图中表示,其中没有顶点重叠.
我尝试了多种布局,但我认为这是因为并非所有节点都相互连接,他们以这种方式绘制...
有没有人知道在没有节点重叠的情况下绘制这些图的方法?
(我试图在下面包含两张图片,但似乎我需要"声望点":/)
先感谢您!
我在网上看了很长时间,找不到这个问题的答案。为简单起见,让我们假设我需要完全平滑一组连接面的法线。我想找到一组向量之间的实际几何平分线,忽略重复的法线并保持三角形汤的准确性。基本上,它需要:
我似乎找到的最常见的法线平滑公式是,通过将法线向量相加并除以三来简单地平均它们;例子:
normalize((A + B + C) / 3);
Run Code Online (Sandbox Code Playgroud)
当然除以三是没有用的,这已经代表了人们提出的天真、自以为是的蛮力平均法的氛围;与此有关的问题还在于,即使是三角形汤和平行法线,它也会把时间弄得一团糟。
我似乎发现的另一个评论是保留初始“面”法线,因为它们来自生成它们的常见交叉乘法运算,因为这样它们(有点)相对于三角形的面积加权。在某些情况下,这可能是您想要做的事情,但是我需要纯平分线,因此面积不能影响公式,即使考虑到它,它仍然会被三角汤弄乱。
我看到了一个提到的方法,它说对相邻面之间的角度进行加权,但我似乎无法正确实施该公式 - 要么是那样,要么不是我想要的。然而,这对我来说很难说,因为我找不到一个简洁的解释,而且我的头脑因所有这些浪费的头脑风暴而变得麻木。
有人知道通用公式吗?如果有任何帮助,我正在使用 C++ 和 DirectX11。
编辑:这里有一些类似的问题,描述了一些方法;
还有这篇文章:http : //www.bytehazard.com/articles/vertnorm.html
不幸的是,我尝试的实现不起作用,我找不到关于哪个公式实际上是我需要的一个清晰、简洁的声明。经过反复试验,我终于发现按角度加权是正确的方法,只是我无法正确实现它;因为它现在似乎正在工作,所以我将在下面添加我的实现作为答案。
我正在尝试构建一个神经网络,该网络将 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) 我正在使用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) vertices ×10
3d ×3
opengl ×3
algorithm ×2
geometry ×2
buffer ×1
c# ×1
c++ ×1
concave ×1
coordinates ×1
cube ×1
dynamic ×1
glsl ×1
graphics ×1
igraph ×1
math ×1
minimize ×1
nodes ×1
normals ×1
opentk ×1
outline ×1
plot ×1
polygon ×1
polygons ×1
r ×1
tensorflow ×1
three.js ×1
vao ×1
vbo ×1
vector ×1