问题标签 [unity3d-terrain]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Unity Terrain GameObject 与自定义地形
我最近在探索和研究 Sebastian Lague 的Procedural Landmass Generation系列的部分内容。绝对优秀的系列,我会推荐给任何想要了解更多关于 Unity 和 Terrain 的人。
无论如何,我遇到了一个我似乎无法得到答案的问题。在他的系列中,他带领观众完成了在 Unity 中从头开始制作地形资源的过程。因此,几乎完全在您的代码中,您正在添加网格、纹理,并调整地形的高度和颜色。所有这些(如果我错了,请纠正我)您可以使用内置 Unity Terrain GameObject 上的 Terrain 组件来完成,如我正在关注的另一个教程(Penny de Byl's Procedural Terrain Generation with Unity中所见,也是一个很棒的我会推荐的系列)。
所以这给我留下了一个问题:
通过这些方法(Sebastian 的方法)创建地形与使用地形游戏对象/组件(Penny 的方法)相比有什么好处?
unity3d - 如何将 Google 地图图像“地形”添加到 Maps SDK for Unity?
我一直在关注此“地形高程”页面中的 Google Maps SDK for Unity 流程。
https://developers.google.com/maps/documentation/gaming/elevation
我可以展示建筑物、道路和草地(第一张图片)。但是,如何将地形的 Google 地图或 Google 地球图像添加到 Unity 中的基础对象中?我更喜欢草和树木而不是建筑细节等
希望引入 2-Google 地球或 3-Google 地图图像(见附件)(而不是必须绘制完整的地形)我知道还有其他工具,如 terrain.party 或“真实世界地形”,但这些产品没有允许放大到地面。Google Maps API 也限制为 20 缩放,并且不能放大到地面。谢谢
c# - 立方体坠落地形 - Unity3D
我知道有很多关于地形坠落的问题和答案。我确实看过它们,但我认为我拥有的这个与其他所有不同。我使用的是 Unity 版本 2019.4.15f1。
基本上,我得到了一个立方体和一个地形(没有图层设置,全部默认)。立方体有一个盒子碰撞器和一个启用了重力的刚体。地形只是一个简单的地形(没有树、没有草等),带有地形碰撞器和未检查重力的刚体。我希望立方体会撞到地形并停下来(或一起向下移动)。但是立方体直接穿过它(立方体在地面上方几米处,所以我确信立方体在时间 0 没有接触到地形)。现在,如果我从地形中移除 RigidBody 组件,立方体确实位于地形上。这是一个错误吗?我想不出我做错了什么(以下是此设置的屏幕截图)。
然后我继续做另一个测试,两个立方体,一个在另一个上面。使用上面提到的同一个立方体,我现在取消选中RigidBody 组件中的重力框。所以这个立方体可以自由地漂浮在空气中。正上方的另一个立方体具有完全相同的设置,但选中了重力框。正如预期的那样,顶部立方体落下,粘在底部立方体的顶部并一起向下移动。这证实了具有刚体和对撞机的两个对象确实相互作用。那么为什么地形和立方体不以相同的方式相互作用呢?它甚至没有在触发器上注册任何碰撞(我使用 onCollisionEnter 和 onTriggerEnter 进行检查)。如果有人可以照亮我,我将不胜感激。
[更新] 好的,经过一番挖掘和测试,我弄清楚了原因。地形不支持刚体(见下面的截图)。事实上,我也尝试在平面上应用相同的建议,并确认平面也不支持刚体。所以我认为这是因为地形不能采取物理行为。您可能可以变换或旋转它,但您不能例如让一个非常重的物体在一端跳跃并期望地形像跷跷板一样转动。您可以通过从 Unity 创建一个默认地形、一个刚体来重现以下错误,然后选中“是运动学框”,然后取消选中“是运动盒”。然后错误将从控制台窗口中出现。我希望 Unity 会自动在检查器本身中提示这个错误,而不是我试图摆弄但是哦..
c# - 为什么我传递给我的多线程作业结构的数组充当引用类型?
我正在开展一个统一项目,该项目涉及基于行进立方体的可变形地形。它的工作原理是在地形块的 3 维坐标上生成密度图,并使用该数据创建表示地形表面的网格。它一直在工作,但是过程非常缓慢。我试图引入多线程来提高性能,但我遇到了一个让我摸不着头脑的问题。
当我运行CreateMeshData()并尝试将我的密度图地形图传递到MarchCubeJob结构时,它会将其识别为引用类型,而不是值类型。我似乎已经将错误减少到这个错误,但我试图以我知道的各种方式引入数据,但我很难过。我认为传递这样的引用应该会创建与引用断开的数据的副本,但我的理解一定是有缺陷的。我的目标是将每个 Marchingcube 多维数据集传递给一个作业并让它们同时运行。
我是多线程的新手,所以我可能在这里犯了一些新手错误,如果有人能帮助我再看一遍,我将不胜感激。干杯!
mapbox - Mapbox Terrain v2:如何修改等高线海拔范围?
我正在使用 Mapbox 地形矢量瓦片集在我的地图上显示海拔等高线。但是我感兴趣的区域非常平坦,因此该区域没有任何可见的轮廓。(基本上,我在我的区域周围看到轮廓,但在我需要轮廓的实际区域中没有。)
如何修改轮廓层的ele字段来改变轮廓密度?谢谢!
unity3d - 如何创建具有瓦片级属性的大型地形?
我需要创建一个 3D 大地形(比如 2000x2000),我需要在其中以 1x1 分辨率跟踪地形表面的属性。例如,我想跟踪 1x1 区域中有多少草或石头,这可能会随着游戏的进行而改变,具体取决于资源消耗。基于此,我想更改该 1x1 区域的视觉外观。我有哪些选择?
虽然我创建了一个跟踪上述属性的 1x1 瓷砖,但我已经阅读过它可能无法根据我的地形大小进行缩放。此外,使用投影将每个标题与不同的地形高度对齐(我希望地形具有平滑的高度变化,但可能不会超过几十个单位)并不容易。我认为在地形上放置网格是放置对象的另一种选择。但不确定如何跟踪每个网格单元的属性或在该点更新 1x1 地形区域。
unity3d - 地形边缘匹配
我从我的资产包中加载了一些地形,但它们的边缘不匹配。我意识到当我在 Unity Editor 中编辑地形时,问题已解决,因为地形在同一个地形组中(请参见此处)。所以我的问题是:我可以通过代码运行时吗?如果是,请告诉我如何!非常感谢!
P/S:我知道函数 TerrainData.SetHeights() 并且我可以用这个函数匹配两个地形的边缘,但我不想手动这样做。
c# - 如何根据四个点计算平均地形坡度?
我正在为 Unity 中的车辆编写一个简单的物理系统,我试图弄清楚如何基于四个点计算平均坡度以应用重力加速度。我可以像这样获得车轮位置的地形高度:
如何根据这四个点计算平均地形坡度?我考虑过计算不同点之间的方向向量,但我不确定如何将它们组合成一个斜率向量。
unity3d - 如何去除刷子是统一读取的?
我是 Unity 的新手,我一直在尝试添加地形和纹理,但它说“画笔是只读的”,我做不到。有谁知道如何停用它?