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

C# 如何从一个对象创建多个顶点?,c#,unity3d,vertices,multiplication,C#,Unity3d,Vertices,Multiplication,在如何将对象/模型(四边形)的顶点跨轴(Z或X)相乘方面,我遇到了一些麻烦,如图1中所示。我从对象/模型(四边形)收集顶点,然后沿轴复制顶点(但对于三角形也是可以接受的),我在这方面遇到了麻烦。结果在图2中 有人知道怎么做吗 -图1。(我正在努力实现的目标) -图2。(我得到的结果) 这是代码,你知道我做了什么 using UnityEngine; using System.Collections; public class Extruder : MonoBehaviour { publ

在如何将对象/模型(四边形)的顶点跨轴(Z或X)相乘方面,我遇到了一些麻烦,如图1中所示。我从对象/模型(四边形)收集顶点,然后沿轴复制顶点(但对于三角形也是可以接受的),我在这方面遇到了麻烦。结果在图2中

有人知道怎么做吗

-图1。(我正在努力实现的目标)

-图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);
    }
}
}
使用UnityEngine;
使用系统集合;
公共级挤出机:MonoBehavior{
公共网格预制;
公共整数长度;
私有网格;
私有向量3[]个顶点;
专用矢量3[]mv;
//用于初始化
void Start()
{
顶点=预设顶点;
生成();
}
//每帧调用一次更新
void生成(){
顶点=新矢量3[(长度)];
对于(int i=0,x=0;x编辑:关于为Unity创建顶点数组的资源:
这些都很好,而且是最近的:


这正是你要求的

你说:

沿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)等等

因此,您有很多代码要编写:

  • 从网格中读取顶点(执行此操作的代码在哪里?尚未执行此操作)
  • 对于每个顶点,读取x、y和z坐标(同上)
  • 对于每个顶点,添加到z坐标,但不添加到x和y坐标
  • 当然,您只能这样做一次。此后,网格不再是Z=0平面中的平面四边形,您的“挤出”将以指数方式挤出,并出现严重错误。在开始之前,您可能应该检查网格最多有4个顶点(除了某些四边形有6个顶点…)

    然而。 网格不是这样工作的

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

    所有额外的步骤都不是可选的!如果您错过了这些步骤,Unity有时会出错,但通常会悄悄地损坏网格,和/或破坏照明,和/或不渲染任何内容。如果您忘记执行这些步骤,大多数步骤都不会出现错误消息

    至少,您必须具备:

  • 每个顶点的向量3
  • 每个三角形的一组3整数
  • …没有这一点,团结就不可能做任何事情

    为了使Unity渲染时不发生崩溃,还需要:

  • 每个顶点的法线
  • 正确配置法线的规范化例程(Unity不会自动执行此操作)
  • 每个顶点的U,V
  • 编辑:有关为Unity创建顶点阵列的资源: 这些都很好,而且是最近的:


    这正是你要求的

    你说:

    沿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)等等

    因此,您有很多代码要编写:

  • 从网格中读取顶点(执行此操作的代码在哪里?尚未执行此操作)
  • 对于每个顶点,读取x、y和z坐标(同上)
  • 对于每个顶点,添加到z坐标,但不添加到x和y坐标
  • 当然,您只能这样做一次。此后,网格不再是Z=0平面中的平面四边形,您的“挤出”将以指数方式挤出,并出现严重错误。在开始之前,您可能应该检查网格最多有4个顶点(除了某些四边形有6个顶点…)

    然而。 网格不是这样工作的

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

    所有额外的步骤都不是可选的!如果您错过了这些步骤,Unity有时会出错,但通常会悄悄地损坏网格,和/或破坏照明,和/或不渲染任何内容。如果您忘记执行这些步骤,大多数步骤都不会出现错误消息

    至少,您必须具备:

  • 每个顶点的向量3
  • 每个三角形的一组3整数
  • …没有这一点,团结就不可能做任何事情

    为了使Unity渲染时不发生崩溃,还需要:

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

  • 你说1.从网格中读取顶点(你的代码在哪里?你还没有这么做),这正是我想学习的(我很确定)我知道如何做其余的。无论如何,我已经搜索了很长一段时间的程序网格生成,但什么也没找到。你知道有什么好的网站可以学习这个主题吗?我每次在谷歌的前几次点击中都发现了这一点(更新的答案,见顶部)你说1.从网格中读取顶点(你的代码在哪里?你还没有这么做),这正是我想学习的(我很确定)我知道如何做其余的。无论如何,我已经搜索了很长一段时间的程序网格生成,但什么也没找到。你知道有什么好的网站可以学习这个主题吗?我每次在谷歌的前几次点击中都发现了这一点(更新的答案,见顶部)