标签: heightmap

将高度图映射到基于网格的轮廓格式

我有以下格式的2D高度图

06 36 39 42 43 55 ... 
37 40 43 43 45 46 ...
40 43 44 45 46 48 ...
44 44 46 47 48 50 ...
41 44 45 47 48 48 ...
...
Run Code Online (Sandbox Code Playgroud)

我需要将其重新映射为基于grin的轮廓格式(因此它可以进一步映射到精灵)

. . . . | . . 
. . . . \ . . 
. . . / / . . 
. . . | . . . 
. . . | . . . 
. / - / . . . …
Run Code Online (Sandbox Code Playgroud)

2d terrain contour heightmap

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

WebGL - 带有高度图的纹理地形

我正在尝试使用WebGL创建3D地形.我有一个带有地形纹理的jpg,另一个带有高度值(-1到1)的jpg.

我看过各种包装器库(比如SpiderGL和Three.js),但我找不到一个可变的例子,如果我这样做(比如在Three.js中)代码没有记录,我也想不通怎么做.

任何人都可以给我一个很好的教程或例子吗?

有一个在three.js所为例http://mrdoob.github.com/three.js/examples/webgl_geometry_terrain.html这是我想要什么差不多.问题是他们随机创造了山脉的颜色和高度值.我想从2个不同的图像文件中读取这些值.

任何帮助都会得到满足.谢谢

javascript terrain webgl three.js heightmap

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

OpenGL纹理采样根据摄像机位置而不同

我正在从加载的高度图数据渲染基于点的地形 - 但这些点会根据摄影机位置的位置更改其纹理.为了演示这个错误(以及这不是因为z缓冲问题而发生的事实)我已经截取了从非常微小的不同摄像机位置(相同的角度)以固定的5像素大小渲染的点的截图,如下所示:

PS:如果将图像拖动到新标签中,图像足够大,没有意识到堆栈会将它们缩小到这么多.

州1: 状态1图像

州2: 状态2图像

生成点的代码相对简单,所以我发布这个只是为了排除选项 - mapArray是一个单维浮点数组并复制到VBO:

for(j = 0; j < mHeight; j++)
{
    for(i = 0; i < mWidth; i++)
    {
        height = bitmapImage[k];

        mapArray[k++] = 5 * i;
        mapArray[k++] = height;
        mapArray[k++] = 5 * j;
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现我更有可能需要调整我的片段着色器,因为我对着色器并不是很好 - 虽然我不确定这些简单代码在哪里出错但猜测它可能不适合用途(基于点渲染).贝娄是我的碎片着色器:

in varying vec2 TexCoordA;
uniform sampler2D myTextureSampler;

void main(){
    gl_FragColor = texture2D(myTextureSampler, TexCoordA.st) * gl_Color;
}
Run Code Online (Sandbox Code Playgroud)

编辑(请求的信息):OpenGL版本4.4没有使用纹理标志.

TexCoordA直接从我的Vertex着色器传递到着色器,完全没有任何改动.自我计算的紫外线使用这个:

float* UVs = new float[mNumberPoints * 2];
    k = 0; 
    for(j = 0; j < mHeight; …
Run Code Online (Sandbox Code Playgroud)

c++ opengl terrain heightmap

8
推荐指数
1
解决办法
819
查看次数

模拟高度图上的流体流动

我正在寻找一种近似在高度图上移动的流体体积的方法.我能想到的最简单的解决方案是将其近似为大量直径小(<0.1m)的非绘制球体.然后,我会在它们停下来的位置放置一个可见的平面,代表水面"水面".据我所知,没有托管物理引擎包含内置流体模拟器,因此问题.

实现将包括使用物理引擎,如JigLibX,它能够模拟球体的运动.为了确定平面的高度,我想到平均分组顶层每个球体的最大高度.

我不希望性能很好,但实时可以接近吗?如果没有,我可以使用此模拟预先烘烤流线吗?

我希望这是有道理的,我真的希望得到关于这是否可行的意见/建议,或者是否有更好的方法来解决这个问题.

感谢任何帮助,Venatu

(如果它的相关,我的目标平台是XNA 4.0,使用C#.Windows只在这个时间点,所以PhysX/Havok是模拟的可能性,但我更喜欢托管解决方案)

c# physics fluid heightmap

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

Three.js 是否有内置的高度图函数?

我目前正在用 JavaScript、Three.js 开发一款游戏。我很好奇是否可以在墙上添加高度图,以使它们更加真实(见图)。带有 2D 墙的游戏设计图像

我见过的所有教程都使用平面而不是矩形。我目前正在使用矩形,并且不想切换,但如果没有矩形的解决方案,我会很高兴知道。

我目前正在使用类 NewObstacle() 来制作我的矩形:

const wallTexture = new THREE.TextureLoader();
const wallTextureTexture = new THREE.MeshBasicMaterial({
  map: wallTexture.load('wall_textures/wall_3.jfif')
})

class NewObstacle{
  constructor(sizeX, sizeY, sizeZ, xPos, yPos, zPos){
    this.sizeX = sizeX
    this.sizeY = sizeY
    this.sizeZ = sizeZ
    this.xPos = xPos
    this.yPos = yPos
    this.zPos = zPos
  }
  makeCube(){
    const cubeGeometry = new THREE.BoxGeometry(this.sizeX, this.sizeY, this.sizeZ)
    this.box = new THREE.Mesh(cubeGeometry, /*new THREE.MeshBasicMaterial({color:
0x505050})*/wallTextureTexture)
    this.box.material.transparent = true
    this.box.material.opacity = 1
    this.box.position.x = this.xPos
    this.box.position.y = this.yPos
    this.box.position.z = …
Run Code Online (Sandbox Code Playgroud)

javascript three.js heightmap

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

GLSL着色器:在两个以上纹理之间插值

我在OpenGL中实现了一个高度图.现在它只是一个正弦/余弦弯曲的地形.此刻,我在白色"冰"和深色"石头"纹理之间进行插值.这样做是这样的:

color = mix(texture2D(ice_layer_tex, texcoord), texture2D(stone_layer_tex, texcoord), (vertex.y + amplitude) / (amplitude * 2))
Run Code Online (Sandbox Code Playgroud)

结果:

从顶部

从底部

它工作正常,但如果我想添加更多纹理(例如草纹理),插值顺序为"冰,石头,草",我该怎么办?我想,有没有这样的功能mix(sampler2D[], percentages[])?我怎么能按照这个逻辑写一个GLSL方法?

java opengl interpolation lwjgl heightmap

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

返回1281的OpenGL glVertexPointer - 无法弄清楚原因

我创建了一个类来从高度图文件中加载Terrain点; 但绘制它们会导致崩溃.我已经将错误缩小到glVertexPointer()函数,该函数返回1281(无效值导致我相信).我已经通过了完整的65k-ish点,似乎无法找到它的问题.在渲染循环中之前发生的唯一其他事情是设置GL_PROJECTION和GL_MODELVIEW以及glClear()(显然是在这个绘制调用之后的交换缓冲区).

class Terrain : public Model
{
public:
Terrain(char* pFile){
    if(!LoadTerrain(pFile))
    {
        OutputDebugString("Loading terain failed.\n");
    }
};

~Terrain(){};

void Draw()
{
    glPushMatrix();
    //glEnableClientState(GL_VERTEX_ARRAY); // Depreciated? Causes crash

    glBindBuffer(GL_ARRAY_BUFFER, mVBO);
    glVertexPointer(mNumberPoints, GL_FLOAT, 0, (GLvoid*)((char*)NULL));

    GLenum a = glGetError(); // 1281

    glPointSize(5.0f);
    glDrawArrays(GL_POINTS, 0, mNumberPoints);

    glBindBuffer(GL_ARRAY_BUFFER, 0);

    //glDisableClientState(GL_VERTEX_ARRAY);

    glPopMatrix();
}

private:
GLuint mVBO;
int mWidth;
int mHeight;
int mNumberPoints;

bool LoadTerrain(char* pFile)
{
    FILE* filePtr;
    int error;
    unsigned int count;
    BITMAPFILEHEADER bfh;
    BITMAPINFOHEADER bih;
    int imageSize, i, j, k, index;
    unsigned …
Run Code Online (Sandbox Code Playgroud)

c++ opengl terrain heightmap

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

如何使用opengl纹理将非标准化/非固定值发送到GLSL着色器?

我正在尝试将浮点值(高度图)数组作为GL_TEXTURE_2D发送到GLSL。当我设置好采样器后,问题出在使用glTexImage2D()上传纹理时发生的钳位。

  glGenTextures(1, &_idnewTID);
  glBindTexture(GL_TEXTURE_2D, _idnewTID);

  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

  glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, regMesh._cols, regMesh._rows, 0, GL_RED, GL_FLOAT, regMesh._heightMap);
Run Code Online (Sandbox Code Playgroud)

我要发送的值在900.0f至1590.0f范围内。但这在加载到时会被完全钳制到1.0f GL_TEXTURE_2D

如何保持值不被钳制到[0,1]。如何修改glTexImage2D()函数以实现此目标?

PS我知道采样器工作正常,因为当我将值除以1500.0f并将其上载到GPU并在着色器中缩放时,我得到了正确的高度图结构。

opengl glsl texture-mapping heightmap

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

需要有关从高度图创建三角形网格的帮助(JavaFX)

我有一个程序,该程序生成一个高度图(0到255之间的2D整数数组),并使用Shape3D“ Box”对象为每个“像素”建立一个3D视图,其高度与其在高度图中的值成比例。这将创建一个看上去很酷的四方形外观。我的程序还创建了一个相应的“颜色图”,以映射地形中每个框应具有的颜色。

我还希望能够将此高度图转换为可以使用颜色图进行纹理处理的网格。

2D高度和颜色图 2D高度和颜色图

从高度图和颜色图创建的彩色三角形网格 所需的颜色网格

(这些是我从Google抓取的图片)

javafx mesh heightmap javafx-3d

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

生成不带图像的heightMap

我想创建一个世界生成器,这样每次加载它时,它都会生成一个新的高度图.为此,我使用2D整数数组.尺寸是x,z和高度(y).

是否有一些简单的生成算法可以随机化地形?

java maps game-development terrain heightmap

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

在高度图三角形上查找点的高度

这个问题必须存在于某个地方,但我不确定它会被称为什么.

在高度图之后,存在直角三角形的地形.每个三角形的每个点从高度图中获取其高度(y).

如果角色位于特定的坐标集上,您可以确定它们所处的三角形.我忘记怎么做是通过使用其他3个点的高度来确定三角形上该点的高度.

collision heightmap

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

有关地形编辑器的好教程吗?

我是3D游戏编程的新手,现在正在Windows上研究DirectX和OpenGL.但我想出了一个地形编辑器,但我无法在网上获得任何开放的教程或想法.

有没有一个很好的教程或开源代码来学习这个?

简单的一个很好,我只是想知道如何提升或降低地形,或在地图上放一棵树,如下面的视频.

如下视频:http://www.youtube.com/watch?v =oaAN4zSkY24

opengl directx terrain game-engine heightmap

-1
推荐指数
1
解决办法
1792
查看次数