标签: uv-mapping

Python 中的 UV/纹理映射

我有一个快速问题。我想知道是否可以在 python 中执行 UV/纹理映射。我知道我可能需要导入一两个模块。但我没有太多关于如何在 python 中执行 UV/纹理映射的示例。
如果可能的话有人可以发布一个例子。最终我想要做的是导入在 3D 程序(例如 Blender 或 3D Max)中创建的 3D 模型,然后我需要将数据应用到该 3D 模型的表面。数据将采用矩阵或数组的形式。我知道 UV/纹理贴图可以帮助使这个过程变得更容易,这就是我对此感到好奇的原因。

python 3d texture-mapping uv-mapping

6
推荐指数
0
解决办法
1274
查看次数

如何在javafx中对纹理坐标进行动画处理

是否有某种液体表面动画可以通过对 uv 坐标进行动画处理来模拟波浪,如下图所示?这个方法可以在JavaFX框架中重新创建吗?

在此输入图像描述

animation javafx uv-mapping javafx-3d

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

OpenGL纹理映射

嘿伙计们,我是游戏编程和图形编程的新手.但是,我急切地希望学习,所以我已经开始用OpenGL构建游戏引擎.我已经实现了所有基本的图形功能,现在我想为我的三角形网格添加纹理支持.

我能找到的纹理映射的唯一教程是针对单个多边形 - 如何定义包裹整个网格的纹理?

我使用lib3ds(http://code.google.com/p/lib3ds/)从.3ds文件加载网格..3ds文件带有一些纹理坐标数据吗?

谢谢!

c++ opengl 3ds texture-mapping uv-mapping

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

为什么TextureCoordinates按照预期运行Viewport2DVisual3D,但不适用于GeometryModel3D?

我有一个我在3ds Max中创建的模型.该模型是一个简单的矩形.它的纹理具有重叠的纹理坐标 - 模型应该并排显示图像文件的右半部分两次.我将此模型导出为.obj,并使用Microsoft Expression Blend将其转换为XAML.

MeshGeometry3D从混合中取出,并Viewport3D使用两种方法将其添加到:

  1. 使用Viewport2DVisual3D具有Label作为Visual.将Label背景设置为纹理图像.使用此方法,一切都按预期工作.
  2. 使用ModelVisual3D具有GeometryModel3D作为Content.将GeometryModel3D材质设置为DiffuseMaterial使用图像作为其画笔的材质.使用这种方法,TextureCoordinatesMeshGeometry3D似乎是不同的解释.

完整代码如下.代码隐藏是空的,除了InitializeComponent():

<Window x:Class="TestTextureCoordinates.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Grid.Resources>
        <MeshGeometry3D x:Key="geometry"
                        Normals="0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1"
                        Positions="113.8997,102.4171,0 148.9045,102.4171,0 148.9045,148.41161,0 113.8997,148.41161,0 184.5722,102.4171,0 184.5722,148.41161,0 148.9045,148.41161,0 148.9045,102.4171,0"
                        TextureCoordinates="0.50639999,0.9995 1.0065,0.9995 1.0065,0.00050002337 0.50639999,0.00050002337 1.0022,0.9995 1.0022,0.00050002337 0.5,0.00050002337 0.5,0.9995"
                        TriangleIndices="0 1 2 0 2 …
Run Code Online (Sandbox Code Playgroud)

.net c# 3d wpf uv-mapping

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

球体的OpenGL UV贴图(有缝)

尝试将UV坐标映射到球体时,我遇到以下问题 在此输入图像描述

这是我用来获取UV坐标的代码

glm::vec2 calcUV( glm::vec3 p)
{
    p = glm::normalize(p);

    const float PI = 3.1415926f;

    float u = ((glm::atan(p.x, p.z) / PI) + 1.0f) * 0.5f;
    float v = (asin(p.y) / PI) + 0.5f;

    return glm::vec2(u, v);
}
Run Code Online (Sandbox Code Playgroud)

在这个stackoverflow问题上很好地解释了这个问题,尽管如此,我仍然没有得到如何修复它.从我读过的内容来看,我必须创建一对重复的顶点.有谁知道一些好的和有效的方式吗?

c++ opengl geometry glsl uv-mapping

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

如何在三个JS中的自定义非方形四边形上映射纹理

和ThreeJS一起玩时,我遇到了一个非正方形四边形纹理的经典问题:http ://www.xyzw.us/~cass/qcoord/

问题是ThreeJS只允许您使用vec2设置纹理坐标(据我所知..),并花了几个小时,最后找到了一个可行的解决方案,我想与社区分享它,也许能得到一些更好的主意? 所以这是代码:

首先,使用三个JS制作我的Quad的javascript:

var planeGeom = new THREE.Geometry();
planeGeom.vertices.push(new THREE.Vector3(0, 0, 10));
planeGeom.vertices.push(new THREE.Vector3(10, 0, 10));
planeGeom.vertices.push(new THREE.Vector3(20, 0,0));
planeGeom.vertices.push(new THREE.Vector3(-10, 0, 0));

//create the 2 faces , maybe i should play with CW or CCW order... ;)
planeGeom.faces.push(new THREE.Face3(0,1,3));
planeGeom.faces.push(new THREE.Face3(1,2,3));

//Compute widths ratio
var topWidth = Math.abs(Plane.TR.x - Plane.TL.x);
var bottomWidth = Math.abs(Plane.BR.x - Plane.BL.x);
var ratio = topWidth / bottomWidth;

//create UV's  as barely explained in the link above (www.xyzw.us)
 var UVS = …
Run Code Online (Sandbox Code Playgroud)

shader texture-mapping webgl uv-mapping three.js

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

THREE.js中单个网格的多个UV /纹理

我有一个使用四个纹理的OBJ。文件中定义的UV的范围是(0,0)到(2,2),这样(0.5,0.5)表示第一纹理中的坐标,(0.5,1.5)是第二纹理中的UV坐标, (1.5,0.5)是第三个纹理中的坐标,而(1.5,1.5)是最后一个纹理中的坐标。

我已经有了正确的three.js几何图形或对象。但是,我现在需要能够将正确的纹理贴图应用于这些对象。

在代码中:

我有一个THREE.Mesh正确的几何图形(UV坐标为U = [0,2],V = [0,2])和虚拟占位符材料。我目前加载单个纹理,如下所示:

var texture = new THREE.TextureLoader().load('tex_u1_v1.png', function() {
    object.material.map = texture;
    object.material.map.needsUpdate = true;
});
Run Code Online (Sandbox Code Playgroud)

如预期的那样,四分之一的网格已正确纹理化。我有三个比较有质感文件tex_u1_v2.pngtex_u2_v1.pngtex_u2_v2.png。我希望能够将这些纹理也应用到object(THREE.js网格),这样网格中的每个有效UV都有一个纹理。

但是,我不知道object在创建之后如何向其中添加多种材料。而且,我不知道如何指定网格tex_u1_v2.png,例如,应将其用于范围为(U = [0,2],V = [1,2])的UV。

javascript 3d textures uv-mapping three.js

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

归一化从OpenGL到Vulkan的UV坐标

我正在为GWEN(无多余废话的GUI)编写Vulkan渲染器,但在获取纹理坐标以匹配时遇到问题。

这是我应该看到的: 正确的输出

这是当前正在发生的事情: 输出错误

中间显示的纹理是我们用于GUI的图像,我确保将其渲染到四边形以确保正确加载。

GUI的结构似乎是正确的,这使我相信UV坐标不正确。特别是Y坐标,因为据我所知X看起来还可以。

void Vulkan::AddVert(int x, int y, float u, float v)
{
    vertices.emplace_back();

    vertices.back().pos.x = ((float)x / 400) - 1.f;
    vertices.back().pos.y = ((float)y / 300) - 1.f;
    //  Our image is 512x512 px
    vertices.back().texCoord.x = (u / 512.0f);
    vertices.back().texCoord.y = 1.0f - (v / 512.0f);
}

void Vulkan::DrawTexturedRect(Gwen::Texture* pTexture, Gwen::Rect rect, float u1, float v1, float u2, float v2)
{
    //  ToDo: Implement textures through GWEN
    //  The GUI texture is hardcoded for now
    // …
Run Code Online (Sandbox Code Playgroud)

c++ opengl normalize uv-mapping vulkan

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

解析 Wavefront .obj 纹理坐标时遇到问题

我正在为 OpenGL ES 2.0 在 objc 中编写我自己的 .obj 解析器,以便更好地了解 OpenGLES 的工作原理。加载顶点并显示带有顶点颜色的模型就像一个魅力。只是一个小提示:我正在使用索引缓冲区。

真正的问题是纹理 atm 的映射。正如您将在下面看到的更多内容一样,我的纹理没有按照应有的方式进行映射。

这是我认为 .obj 格式的工作原理,如果我错了,请纠正我:“f”线描述了一个面,其中斜线前的数字定义了顶点的索引,斜线后的数字定义了纹理坐标.

考虑以下 .obj 文件(由 Cinema 4D 导出):

v -75 75 -50
v 75 75 -50
v -75 -75 -50
v 75 -75 -50

vt 0 0
vt 0 1
vt 1 1
vt 1 0

f 4/3 3/2 1/1
f 2/4 4/3 1/1
Run Code Online (Sandbox Code Playgroud)

以及以下纹理:

512x512 纹理

现在,当我在 OpenGL ES 3D 空间中定位顶点并尝试将纹理坐标映射到每个单独的顶点时,映射出错了。我可以通过移动一些纹理坐标值来解决这个问题,但我意识到这不是这样做的方法。我还尝试编辑我的一些 .obj 导出器设置以翻转轴和/或 uv 映射,但没有一个会导致正确的映射。关于 .obj 文件格式,我的理论中是否缺少某些内容?我可能已经说过的一件事是:我昨天读到 .obj 格式的坐标系将 topleft 定义为纹理的锚点。所以我已经在解析中解决了这个问题。

这是当前情况的一个小总结: 更新:纹理的坐标系是实际的 .obj 纹理坐标系,而不是 OpenGL …

parsing textures wavefront uv-mapping opengl-es-2.0

3
推荐指数
2
解决办法
6417
查看次数

用于挤压测量的自定义 UVgenerator Three.js

我想在挤压几何体的表面使用纹理。我研究自定义 UV 生成器已经有一段时间了,并发现了这些相关问题: 1.)如何将纹理应用到 THREE.ExtrudeGeometry? 2.)加载的纹理显得模糊,或者像单一颜色。如何让纹理变得酥脆锐利

但是,建议将我的几何点除以 1000 的方法不起作用,mesh.scale.set(1000,1000,1)因为我的几何不再位于正确的位置。我更愿意指定 UV 映射。一个答案说要根据源代码实现一个自定义 uvgenerator,但我被困住了并且不知道该怎么做。

这是我的几何体创建,材质为 512x512px,如何将纹理映射到顶部?:

pointList=[[0,0,0],
        [0,1000,0],
        [750,1000,0],
        [750,750,0],
        [1000,750,0],
        [1000,0,0]]

for (i=0;i < pointList.length; i++) {

        point = pointList[i];

        x = point[0];
        y = point[1];

        myPoints.push( new THREE.Vector2 (x,y) );
    }

    myShape = new THREE.Shape( myPoints );
    extrusionSettings = {
        amount:height
    };

    myGeometry = new THREE.ExtrudeGeometry( myShape, extrusionSettings );
    resultshape = new THREE.Mesh( myGeometry, material );
Run Code Online (Sandbox Code Playgroud)

geometry uv-mapping three.js

3
推荐指数
1
解决办法
2935
查看次数