Articles of 网格

基于网格的2D照明问题

我知道这个问题之前已经被问过了,但不幸的是,我对这门语言是陌生的,所以我find的复杂的解释对我毫无帮助。 我需要一个照明引擎,我已经尝试了一些程序化的照明系统。 这种方法效果最好: if (light[xx – 1, yy] > light[xx, yy]) light[xx, yy] = light[xx – 1, yy] – lightPass; if (light[xx, yy – 1] > light[xx, yy]) light[xx, yy] = light[xx, yy – 1] – lightPass; if (light[xx + 1, yy] > light[xx, yy]) light[xx, yy] = light[xx + 1, yy] – lightPass; if […]

我应该如何帮助玩家驾驶狭窄的电网路口?

我正在寻找一种技术来帮助玩家在角色持续运动的同时在狭窄的道路上行驶。 在交叉路口改变方向时,要成功转弯时很难确定方向。 如果时间不合适,角色会被卡住。 我怎样才能让玩家更容易? (这是一个大学任务。)

给定另一个网格索引确定网格顶点索引

当我解释我正在努力完成的事情时,请随身携带 下面的每个“X”代表一个网格顶点: 对于我的Unity3d GameObject(G1); 网格顶点按以下顺序存储在C#List对象中。 *注意网格索引“A”。 这是我知道的一个值 – 在这种情况下,A = 16(网格索引16)。 我有另一个GameObject(G2),它的形状是一样的(一个简单的矩形),但是网格顶点sorting不同。*注意网格索引'B'。 这是一个值我不知道,我想find这个值(网格索引) – 在这种情况下B = 17(网格索引17)。 正如你所看到的,除了旋转90度之外,网格排列几乎是一样的。 如果我知道A的“网格顶点索引”,我怎样才能findB的“网格顶点索引”? 什么是可以计算B的网格索引的algorithm? 我的尝试根本不工作: uint A = 16; uint nCols = 6; uint nRows = 4; // Technically both B and A sit on Row 3, Column 5 so if I can find A's row and column maybe […]

Unity – 从Blender导入的网格总是被破坏

我想要将我在Blender中制作的地形网格导入Unity,但是Unity似乎无法正确加载它。 这可能是什么原因,我该如何解决?

devise问题:对长数据网格进行建模和可视化的最佳方法

也许一些关于科学应用程序的noob问题,你可以帮助:我试图渲染一个大的,平均间距的二维数据网格。 完整的数据集尺寸可以是从48×250,000到1000×1500点/像素的任何地方。 数据是均匀分布的,但是我需要改变宽高比,然后在屏幕上一次只渲染一部分数据。 我需要用户能够通过用户input顺利地向前或向后滚动,或者按下“播放”button,使其以一定的速度向前或向后移动。 我正在寻找如何通过DirecX或OpenGL(可能使用SharpDX或OpenTK)来处理这个问题的建议。 我正在考虑的基本方法是使用应用程序从数据中dynamic生成的纹理,然后将它们映射到一个非常简单的模型。 我会保持graphics卡提供足够大的场景,以便用户滚动或移动,他们不必等待应用程序。 我有的问题是: 1)这种方法是否有意义? 我假设这是比创建离散的颜色原语更快速和更快的方式。 真正? 2)是否有一个特别的纹理格式,很好用和易于创建(或者我直接创建它)? 我将应用程序内存中的数据视为大型数组,并根据需要从磁盘加载/卸载。 在创建图像/纹理块时,我会将标量值映射到一个颜色。 3)将mipmapps有用吗? 我可以有一个纵横比(或足够小的窗口),屏幕像素less于可视范围内的数据。 或者,它会自动子采样? 4)如果使用mipmap,大部分缩放都是沿着长方向的,那么我可以使用非方形子样本吗? 4)创建压缩图像是否有意义? 或者,压缩开销是否会产生很多好处(或者我怎么确定这一点) 5)我将如何去寻找一个最佳的纹理大小? 任何其他的一般建议? 希望这是一个简单的问题,你们都在游戏中做的很酷的东西!

如何突出显示并移动到等距网格中的相邻图块?

我试图创建一个基于回合的策略游戏,将游戏对象从网格中的一个图块移动到另一个图块附近。 我已经使用精灵和游戏对象创建了网格,但无法整理运动部分。 我怎样才能突出显示给定“当前”瓷砖的相邻瓷砖,然后允许游戏对象移动到任何突出显示的瓷砖?

我怎样才能使这个着色器背景更有效率?

我想使用着色器作为手机游戏的背景。 我为我的项目使用libgdx。 我从来没有写过glsl,但这是我迄今为止的尝试: http://glslsandbox.com/e#22332.13 在桌面上,代码运行良好,但是在移动设备上,有时可能会有点慢。 我读过使用内置函数减less分支,所以我尝试使用mix和smoothstep而不是if语句。 我也不确定是否正确渲染着色器。 首先我创建一个TextureRegion: fbo = new TextureRegion(new FrameBuffer(Pixmap.Format.RGB888, width, height, false).getColorBufferTexture()); 然后,我创建一个矩形网格,并将着色器渲染为网格上的两个三角形。 设备/窗口分辨率也作为统一数据传递给着色器。 然后我打电话给batch.setShader(background); 最后是batch.draw(fbo,0,0,width,height); 有没有更好的办法,我可以做到这一点? 上面的链接代码: #ifdef GL_ES precision mediump float; #endif uniform float time; uniform vec2 mouse; uniform vec2 resolution; //created 1/15/2015 by alex booth const vec3 sky_top_color = vec3(90.0/255.0, 200.0/255.0, 190.0/255.0); const vec3 sky_bot_color = vec3(235.0/255.0, 235.0/255.0, […]

我的运行时网格不是在顶点所在的位置创建的,需要帮助

我正在尝试在运行时创建一个四元组,并且遇到一个问题,即网格不显示在设置了顶点的场景中。 在下面的图片中,您可以看到船,并在最右边的网格。 使用网格的4个顶点在网格后面画出的4个白色圆点。 我的代码: //Handles the method calls for the mesh creation private void BoundingMeshCreation() { Quaternion currentRotation = ResetPosition(new Quaternion(0, 0, 0, 0)); BoundingPointsType boundingPoints = DetermineBounds(); Mesh boundingMesh = CreateBoundingMesh(boundingPoints); AssignMesh(boundingMesh); ResetPosition(currentRotation); } //Creates the mesh filter and assigns the mesh private void AssignMesh(Mesh boundingMesh) { MeshFilter newMeshFilter = gameObject.AddComponent<MeshFilter>(); newMeshFilter.mesh = boundingMesh; […]

如何caching瓷砖animation瓷砖的网格?

先来一点背景: 我正在写一个瓷砖地图渲染器。 瓦片地图是一个稀疏网格,瓦片ID以16×16瓦片(可configuration)存储。 目前,渲染器通过select与摄像机截头相交的块并加载caching的网格或者没有caching的网格的块或者自上一帧计算新的网格之后发生变化来渲染静态(非animation)瓦片。 每个网格都有一个顶点缓冲区,索引缓冲区和每个纹理的索引范围列表。 对于每个正在渲染的块,设置vextex缓冲区和索引缓冲区,并为每个纹理(索引范围)设置纹理并调用DrawIndexed。 现在我想支持animation切片,但是我想不出一种caching使用的网格的好方法。 似乎相当具有挑战性,因为瓷砖可以有不同数量的帧,如果帧是在相同的纹理,并没有garauntee,并且如果要支持瓷砖帧时间的变化会变得更加复杂。 我一直在做一些谷歌search等,并没有发现任何有用的东西。 我有一些想法: 而不是存储在网格中的紫外线存储一些其他的数据,并使用某种间接寻找紫外线。 我不知道如何做到这一点。 我认为你将不得不为了一个animation在所有的框架中保存这个纹理。 只要放弃和使用像SpriteBatchanimation瓷砖的东西。 这可能是最灵活的。 可以通过使整个网格的animation时间(每秒帧数)固定,使用简化纹理使用的贴图集纹理图集打包器(可能应该这样做)来简化事情。 老实说,有时我觉得我是在过度工程这个东西,应该放弃网格caching在一起,只是使用SpriteBatch。 但我想继续下去。 任何帮助将是伟大的。

为什么添加新组件后,我的网格引用被标记(克隆)?

我有一个脚本,创建一个四边形网格,将网格物体保存为资产,并根据一些参数组装游戏对象。 如果添加另一个组件到GameObject之后,网格被标记为“(克隆)”。 gif供参考。 这一切都发生在代码中,但手动执行时结果相同。 – 当我拖动对象到项目视图使其成为预制时, 网格filter失去了它的网格引用。 如果以后手动分配网格,这很好,但这样做的目的就是失败。 要清楚的是,如果我不添加这个(或任何)组件,它可以正常工作,并且可以毫无问题地变成预制件。