标签: vertices

在OpenGL中识别可见顶点

识别特定视点可见顶点的最有效方法是什么?

我有一个由几个3D模型组成的场景.我想将标识符附加到每个顶点(ModelID,VertexID),然后从各个视点生成2D图像,并为每个图像生成可见顶点标识符的列表(实际上这是用于图像处理应用程序).

最初我想在顶点法线和摄像机视图矢量之间执行点积,以确定顶点是否面向摄像机,但是如果模型被另一个对象遮挡,则此测试将不起作用.

提前致谢

opengl visibility occlusion vertices vertex

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

如何使用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
查看次数

LibGDX BOX2D更改maxPolygonVertices

我需要制作一个超过8个顶点的体,我得到了错误.

   AL lib: (EE) alc_cleanup: 1 device not closed
Assertion failed!

Program: C:\Program Files\Java\jre7\bin\javaw.exe
File: /var/lib/jenkins/workspace/libgdx/gdx/jni/Box2D/Collision/Shapes/b2PolygonShape.cpp, Line 122

Expression: 3 <= count && count <= 8
Run Code Online (Sandbox Code Playgroud)

我怎样才能改变那个常数?

我找到了这个文件https://github.com/libgdx/libgdx/blob/master/gdx/jni/Box2D/Common/b2Settings.h

我在这里看到了

#define b2_maxPolygonVertices   8
Run Code Online (Sandbox Code Playgroud)

如何从libGDX更改它?

vertices box2d libgdx

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

graph-tool:如何访问属性?

我想在一个图形工具图中存储一个类的实例,每个节点一个对象(或者作为图形工具调用它们的"顶点").我试图使用顶点属性,因为这似乎是这样做方式.

class MyClass(object):
    def __init__(self, title):
        self.title = title

graph  = Graph()
my_obj = MyClass('some title')

vertex = graph.add_vertex()
vprop  = graph.new_vertex_property('object')
vprop[vertex] = my_obj
Run Code Online (Sandbox Code Playgroud)

现在我想读回我的类对象,例如迭代所有节点/顶点并打印它们的标题:

for vertex in self.graph.vertices():
    # TODO: how to access titles ? this just prints
    # "<Vertex object with index '0' at 0xb1e4bac>"
    print repr(vertex) + '\n'
Run Code Online (Sandbox Code Playgroud)

另外,如何从图形中获取具有特定标题的类对象?一种方法似乎是创建一个顶点过滤器使用graph.set_edge_filter(...)并应用它 - 这似乎是一个相当昂贵的操作,考虑到我想要的只是获得一个单个对象.我真的不想将我自己的对象标题/顶点索引映射维护为IMO,这是图的任务之一.

我错过了一些基本的东西吗?

python graph vertices graph-tool

5
推荐指数
1
解决办法
4084
查看次数

Gremlin:如何找到没有特定边的顶点?

我一直在研究Gremlin图语言,它看起来非常强大。但是,在研究如何根据需求进行评估时,我遇到了一个我似乎无法完成的案例。

假设已启动Gremlin,并使用其示例数据库:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
...
gremlin> g.V.out('knows')
==>v[2]
==>v[4]
Run Code Online (Sandbox Code Playgroud)

因此,这显示了具有“已知”边缘的顶点。

但是,我想找到具有“已知”边缘的顶点。就像是:

gremlin> g.V.outNot('knows')
==>v[3]
==>v[5]
==>v[6]
Run Code Online (Sandbox Code Playgroud)

如何找到这些顶点?

(编辑以使输出正确)

graph vertices edges gremlin

5
推荐指数
1
解决办法
6621
查看次数

使用 glBufferData 后可以删除浮点数组吗?

我正在研究 OpenGL API,我想问你是否可以在将它传递给 OpenGL 后删除一个浮点数组顶点。

示例代码:

GLuint VBO;
float *vertices = new float[2];
vertices[0] = 0.0f;
vertices[1] = 1.0f;

glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

delete[] vertices;
Run Code Online (Sandbox Code Playgroud)

你能告诉我这样做的后果吗?

opengl buffer object vertices

5
推荐指数
1
解决办法
1386
查看次数

如何使用python igraph以最短路径获取顶点?

我可以使用 python-igraph 创建一个非常简单的图形...

import igraph
g=igraph.Graph.TupleList([("a", "b", 3.0), ("c", "d", 4.0), ("a", "c", 5.0)], weights=True)
print( igraph.summary(g, full=True) )
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

IGRAPH UNW- 4 3 --
+ attr: name (v), weight (e)
+ edges (vertex names):
      edge   weight
[0]   a--b        3
[1]   c--d        4
[2]   a--c        5
Run Code Online (Sandbox Code Playgroud)

找到最短路径很容易!

source = g.vs[0]             // vertex "a"
target = g.vs[len(g.vs)-1]   // vertex "d"
g.shortest_paths(source=source, target=target, weights='weight')
Run Code Online (Sandbox Code Playgroud)

打印结果:

[[9.0]]
Run Code Online (Sandbox Code Playgroud)

我很高兴最短路径的边权重为 9.0。但是,我想获得构成图形最短路径的实际顶点和边。得到一个看起来像这样的对象会很好:

shortestPath = [("a", "c", 5.0), ("c", "d", 4.0)]    
Run Code Online (Sandbox Code Playgroud)

python-igraph 可以向我提供这个吗?我在没有运气的情况下搜索了文档......

python graph shortest-path vertices igraph

5
推荐指数
0
解决办法
511
查看次数

OpenGL 更新顶点数组/缓冲区

当我第一次向缓冲区添加一些顶点时,这些是我正在调用的相关函数

    // Create and bind the object's Vertex Array Object:
    glGenVertexArrays(1, &_vao);
    glBindVertexArray(_vao);

    // Create and load vertex data into a Vertex Buffer Object:
    glGenBuffers(1, &_vbo);
    glBindBuffer(GL_ARRAY_BUFFER, _vbo);
    glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(float), &vertices[0], GL_STATIC_DRAW);

    // Tells OpenGL that there is vertex data in this buffer object and what form that vertex data takes:

    // Obtain attribute handles:
    _posAttrib = glGetAttribLocation(program, "position");
    glEnableVertexAttribArray(_posAttrib);
    glVertexAttribPointer(_posAttrib, // attribute handle
                          4,          // number of scalars per vertex
                          GL_FLOAT,   // scalar type
                          GL_FALSE,
                          0,
                          0); …
Run Code Online (Sandbox Code Playgroud)

c++ opengl graphics shapes vertices

5
推荐指数
1
解决办法
3411
查看次数

从常规 GUI 打开多个网格时,如何抑制“统一重复顶点”的提示

我有一个包含数百个 STL 网格的文件夹,我想使用 flatten 命令将它们合并到 meshlab 中。

我使用的是常规 GUI,当我打开文件并选择所有这些 STL 文件时,如果我想“统一重复顶点”,系统会提示我输入每个文件。

由于我有数百个,这是不可接受的。有没有办法配置软件以将我的“是”应用于它打开的所有模型?

太棒了!

vertices unify meshlab

5
推荐指数
1
解决办法
338
查看次数

Google Cloud Vision OCR API返回的边界框/顶点值不正确

我正在使用Google Cloud Vision API的“ TEXT_DETECTION”选项对某些图像进行OCR。

单个字符周围的边界框有时准确,有时不准确,通常在同一图像内。

这是视觉算法的概率性质的正常副作用,视觉API中的错误,还是我解释响应方式的问题?

带有Google Vision OCR API的文本和边框的图像

带有较差边框的字母“ a”

这是特定于字母“ a”的响应部分,我将从中提取边界框。

stdClass Object
(
    [property] => stdClass Object
        (
            [detectedLanguages] => Array
                (
                    [0] => stdClass Object
                        (
                            [languageCode] => en
                        )

                )

        )

    [boundingBox] => stdClass Object
        (
            [vertices] => Array
                (
                    [0] => stdClass Object
                        (
                            [x] => 419
                            [y] => 304
                        )

                    [1] => stdClass Object
                        (
                            [x] => 479
                            [y] => 304
                        )

                    [2] => stdClass Object
                        (
                            [x] => 479
                            [y] => 397
                        )

                    [3] => stdClass …
Run Code Online (Sandbox Code Playgroud)

api bounding-box vertices google-cloud-vision

5
推荐指数
0
解决办法
718
查看次数