标签: texture-mapping

正确的glsl仿射纹理映射

我正在尝试在GLSL中编码正确的2D仿射纹理映射.

说明:

...没有这个图像对我的目的是正确的.右(标记为正确)具有我不想要的透视校正.所以这个:了解Q纹理坐标解决方案(没有进一步的改进)并不是我想要的.

我想简单地在四边形内"拉伸"纹理,如下所示:

在此输入图像描述

但是由两个三角形组成.有什么建议(GLSL)好吗?

opengl math glsl texture-mapping

5
推荐指数
2
解决办法
6294
查看次数

Assimp 模型有纹理但没有纹理坐标

我正在使用 Assimp 将 3D 模型加载到我的程序中。到目前为止,一切都很顺利,除了我遇到了一个似乎没有意义的 Lightwave 对象。当然它在 Lightwave 中渲染得很好,但在 Assimp 中没有纹理坐标,没有 UV 坐标,但最终会加载纹理。但这无济于事 - 它们只是坐在内存中并且永远不会被使用,因为 - 你猜对了 - 没有纹理坐标。

到目前为止,我还没有找到任何有用的 Assimp 页面。其他模型加载良好并正确贴图。这是 Assimp 的问题吗?

3d texture-mapping 3d-modelling assimp

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

如何在 OpenGL 中使用三角形带创建圆柱体的纹理?

这是我创建的圆柱体:

void drawCylinder(float r, float g, float b) {
    setMaterialColors(r, g, b);
    glColor4f(r, g, b, 1.0);
    /* top triangle */
    double i, resolution  = 0.1;
    double height = 1, radius = 0.5;
    glPushMatrix();
    glTranslatef(0, -0.5, 0);
    glBegin(GL_TRIANGLE_FAN);
        glVertex3f(0, height, 0);  /* center */
        for (i = 0; i <= 2 * PI; i += resolution)
            glVertex3f(radius * cos(i), height, radius * sin(i));
    glEnd();

    /* bottom triangle: note: for is in reverse order */
    glBegin(GL_TRIANGLE_FAN);
        glVertex3f(0, 0, 0);  /* center */ …
Run Code Online (Sandbox Code Playgroud)

c++ opengl opengl-es texture-mapping

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

MeshBasicMaterial 颜色色调纹理贴图 Three.js

我正在使用已应用颜色的 MeshBasicMaterial。

var material = new THREE.MeshBasicMaterial({color: myColor});
Run Code Online (Sandbox Code Playgroud)

有时我需要向材质添加纹理

material.map = new THREE.ImageUtils.loadTexture(...);
Run Code Online (Sandbox Code Playgroud)

这工作正常,但材质的颜色正在给纹理着色。

我意识到我可以将材质的颜色更改为白色以消除这种着色,但找不到删除材质颜色或更改颜色和纹理混合方式的方法 - 这可能吗?我试图避免创建新材料并尽可能避免更换。

Lee Stemkoski 的示例中演示了 - 将地图更改为“草”,然后更改材质颜色

http://trijs.org/docs/scenes/material-browser.html#MeshBasicMaterial

blending colors texture-mapping three.js

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

将纹理材质应用于 SceneKit 中的自定义对象

SceneKit初学者在这里,做一个iOS项目。

我一直在围绕 SCN 几何体(球体,到目前为止)包裹纹理,如下所示:

let scene = SCNScene()
var planet : SCNGeometry
planet = SCNSphere(radius: 1.0)
let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "texture.jpg")
planet.materials = [material]
let planetNode = SCNNode(geometry: planet)
scene.rootNode.addChildNode(planetNode)
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常。我有一些纹理,无论如何都适用于球体。

但是,当我尝试加载自定义 obj 文件时,当我从 obj 加载几何图形时,纹理材料似乎拒绝映射到它上面,如下所示:

let scene = SCNScene()
var planet : SCNGeometry
let tempScene = SCNScene(named: "model.obj")
planet = tempScene!.rootNode.childNodes[0].geometry!
let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "texture.jpg")
planet.materials = [material]
let planetNode = SCNNode(geometry: planet)
scene.rootNode.addChildNode(planetNode)
Run Code Online (Sandbox Code Playgroud)

然而,模型对象似乎显示得很好,尽管没有纹理。
任何指针?

opengl-es texture-mapping ios scenekit swift

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

如何在 OpenGL 中标准化纹理空间的图像坐标?

假设我有一张尺寸为320x240的图像。现在,从sampler2D具有整数图像坐标的采样中ux, uy,我必须对[0,大小]范围内的纹理坐标进行标准化(大小可以是宽度或高度)。

现在,我想知道我是否应该像这样正常化

texture(image, vec2(ux/320.0, uy/240.0))
Run Code Online (Sandbox Code Playgroud)

或者像这样

texture(image, vec2(ux/319.0, uy/239.0))
Run Code Online (Sandbox Code Playgroud)

因为ux = 0 ... 319uy = 0 ... 239后一个实际上会覆盖[0, 1]的整个范围,对吗?这意味着0对应于例如最左边的像素,1对应于最右边的像素,对吧?

另外我想保持过滤,所以我不想使用texelFetch.

谁能告诉我一些关于这个的事情吗?谢谢。

opengl textures glsl texture-mapping

5
推荐指数
2
解决办法
7829
查看次数

OpenGL 加载将最后加载的纹理绑定到所有的纹理 ID

所以我的问题是我尝试在启动时加载多个纹理,然后存储所有 ID,以便我可以绑定它们以使用它们。现在我知道 ID 被正确存储,因为我可以调试它并在分配和使用中看到 ID 是相同的。只是对于每个绑定,它使用我加载的最后一个纹理。这是我的代码:

GLuint TextureLoader::LoadTexture (const char* fileName,Material& material,int width,int height) {
    GLuint textureImage;

    FILE* textureFile;
    textureFile = fopen(fileName, "rb");
    unsigned char* imageData;

    if (textureFile == NULL) {
        return 0;
    }
    imageData = (unsigned char*)malloc(width * height * 3);
    char header[54];
    fread(header,1,54,textureFile);
    fread(imageData, width * height * 3, 1, textureFile);

    fclose(textureFile);

    for (int i = 0; i < width * height; ++i) {
        int nextIndex = i * 3;
        unsigned char a = imageData[nextIndex];
        unsigned char b …
Run Code Online (Sandbox Code Playgroud)

c++ opengl loading texture-mapping texture2d

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

如何将彩色点云转换为纹理网格?

我有一个 .ply 文件,其中包含彩色点云:

青蛙点云

我需要将其转换为纹理网格。我可以创建一个空白网格:

过滤器 -> 点集 -> 曲面重建:泊松

但结果是白色的网格

青蛙网

似乎所有有关颜色的信息都丢失了。有什么建议吗?谢谢

mesh texture-mapping point-clouds meshlab

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

如何插入 UV 坐标?

我正在尝试将纹理应用于我的 .md2 模型。我使用 Gouraud 着色给它上色(底部/顶部平面三角形的标准算法),我必须使用类似的代码来处理纹理坐标 U 和 V。但我真的不明白如何对它们进行插值。从我的尝试来看,我的代码似乎只在边缘插入,而不是在它们之间插入。我错过了什么?谢谢你。 在此处输入图片说明

这里的颜色由 u 为红色,v 为绿色,255 为蓝色(仅用于底部扁平三角形): 在此处输入图片说明

 void Rasteriser::TfillBottomFlatTriangle(Vertex vertex1, Vertex vertex2, Vertex vertex3, COLORREF c1, COLORREF c2, COLORREF c3, HDC hdc)
    {
        float slope1 = (vertex2.GetX() - vertex1.GetX()) / (vertex2.GetY() - vertex1.GetY());
        float slope2 = (vertex3.GetX() - vertex1.GetX()) / (vertex3.GetY() - vertex1.GetY());

    //U and V
    float slope1U = (vertex2.GetU() - vertex1.GetU()) / (vertex2.GetY() - vertex1.GetY());
    float slope2U = (vertex3.GetU() - vertex1.GetU()) / (vertex3.GetY() - vertex1.GetY());

    float slope1V = (vertex2.GetV() - vertex1.GetV()) / (vertex2.GetY() …
Run Code Online (Sandbox Code Playgroud)

c++ interpolation texture-mapping

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

如何在MATLAB中绘制纹理贴图三角形?

(u,v)在图像的坐标中有一个三角形.我想在3D坐标处绘制这个三角形,(X,Y,Z)用图像中的三角形进行纹理映射.

这里,u,v,X,Y,Z所有具有三个元素的向量代表三角形的三个角.

我有一个非常难看,缓慢且令人不满意的解决方案,其中我:

  1. 提取图像的矩形部分
  2. 使用由三个点定义的变换将其转换为3D空间
  3. 用表面画它
  4. 最后用AlphaData掩盖不属于三角形的所有东西

当然必须有一种更简单的方法吗?

matlab geometry rendering texture-mapping geometry-surface

4
推荐指数
1
解决办法
8414
查看次数