如何从一个对象创建多个顶点?

How do i create multiple vertices from an object?

我在如何将 object/model(Quad) 的顶点乘以横跨轴(Z 或 X)的顶点方面遇到了一些麻烦,就像在 Pic1 中一样,我从 object/model 中收集顶点(Quad)然后沿轴复制顶点(但也可以接受三角形),我在执行此操作时遇到了麻烦,结果在 Pic2 中。

有人知道怎么做吗?

-Pic1.(我要实现的目标)

-图2.(我得到的结果)

这是代码,所以你知道我做了什么。

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);
    }
}
}

编辑:有关为 Unity 创建顶点数组的资源:

这两个都不错,最近的:

http://jayelinda.com/modelling-by-numbers-part-1a/

http://catlikecoding.com/unity/tutorials/procedural-grid/


它完全按照您的要求进行。

你说:

Draw points along the Z-axis. (0,0,1), (0,0,2), (0,0,3), (0,0,4) .. etc

我想你想要的是:

Draw points OFFSET FROM THE ORIGINAL by steps along the Z-axise. (x+0, y+0, z+1), (x+0, y+0, z+2), (x+0, y+0, z+3)... etc

所以,你有很多代码要写:

  1. 从网格中读取顶点(执行此操作的代码在哪里?您还没有这样做)
  2. 对于每个顶点,读取 x、y 和 z 坐标(同上)
  3. 对于每个顶点,添加到 z 坐标而不是 x 和 y

当然,您只能这样做一次。在那之后,网格不再是 Z=0 平面中的扁平四边形,并且您的 "extrusion" 将呈指数拉伸,并且出现严重错误。可能你应该在开始之前检查网格最多有 4 个顶点(除了一些四边形有 6 个顶点......)

不过。

网格不是这样工作的。

您至少缺少大约 20-100 行代码。寻找一些关于程序网格生成的教程。

所有额外的步骤都不是可选的!如果你错过了它们,有时 Unity 会出错,但通常它会默默地破坏网格,and/or 破坏你的照明,and/or 不渲染任何东西。如果您忘记执行大多数步骤,则没有错误消息!

至少,您必须:

  1. 每个顶点一个 Vector3
  2. 每个三角形有一组 3 个整数

...没有它,Unity 几乎不可能做任何事情。

你还需要,为了让 Unity 渲染它而不会崩溃:

  1. 每个顶点的法线
  2. 正确配置法线的规范化例程(Unity 不会自动执行此操作)
  3. 每个顶点一个 U,V