我在如何将物体/模型(Quad)中的顶点乘以轴(Z或X)(如Pic1中)相比有点麻烦我从对象/模型中收集顶点(Quad)然后复制沿轴的顶点(但也可以接受三角形),我在执行此操作时遇到问题,结果在Pic2中。
有人知道怎么做吗?
-Pic1。(我想要实现的目标)
-Pic2。(我得到的结果)
这是代码,所以你知道我做了什么。
using UnityEngine;
using System.Collections;
public class Extruder : MonoBehaviour {
public Mesh prefab;
public int length;
private Mesh mesh;
private Vector3[] vertices;
private Vector3[] mv;
// Use this for initialization
void Start()
{
vertices = prefab.vertices;
Generate();
}
// Update is called once per frame
void Generate () {
vertices = new Vector3[(length)];
for (int i = 0, x = 0; x <= length; i++, x++)
{
vertices[i] = new Vector3(0, 0, x);
}
mesh.vertices = vertices;
}
private void OnDrawGizmos()
{
Gizmos.color = Color.black;
for (int i = 0; i < vertices.Length; i++)
{
Gizmos.DrawSphere(vertices[i], 0.1f);
}
}
}
答案 0 :(得分:2)
这些都非常好,最近:
http://jayelinda.com/modelling-by-numbers-part-1a/
http://catlikecoding.com/unity/tutorials/procedural-grid/
这正是你所要求的。
你说:
沿Z轴绘制点。 (0,0,1),(0,0,2),(0,0,3),(0,0,4).. 等
我认为你想要的是:
沿着Z轴的步骤从原点绘制点偏移。 (X + 0, y + 0,z + 1),(x + 0,y + 0,z + 2),(x + 0,y + 0,z + 3)......等
所以,你需要编写很多代码:
当然,你只能做一次。在那之后,网格不再是Z = 0平面中的平面四边形,并且你的“挤压”会以指数方式挤出,并且会出现可怕的错误。可能你应该在开始之前检查网格最多有4个顶点(除了一些四边形有6个顶点......)
这不是网格的工作原理。
您缺少大约20到100行代码,最少。查看有关程序网格生成的一些教程。
所有额外步骤都不是可选的!如果你错过了它们,有时Unity会出错,但通常它会无声地破坏网格,和/或破坏你的光线,和/或什么都不渲染。如果您忘记执行这些步骤,则大多数步骤都没有错误消息!
非常少,你必须:
......没有它,Unity几乎不可能做任何事情。
你还需要,为了让Unity渲染它而不会崩溃: