Mesh画圆柱、圆锥、球、柏林地图UV Plane

效果

圆锥

圆柱

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Exam0915SphereTool : MonoBehaviour
{
    public int num = 20;
    public float r = 5;
    // Start is called before the first frame update
    void Start()
    {
        VertexHelper vh = new VertexHelper();
        Mesh mesh = new Mesh();
        float angle = 2 * Mathf.PI / num;
        for (int i = 0; i < num/2+1; i++)
        {
            float y = Mathf.Cos(i * angle) * r;
            float xr = Mathf.Sin(i * angle) * r;
            float uvy = (float)i / (num / 2);
            for (int j = 0; j < num; j++)
            {
                float x = Mathf.Sin(j * angle) * xr;
                float z = Mathf.Cos(j * angle) * xr;
                float uvx = (float)j / num;
                vh.AddVert(new Vector3(x, y, z), Color.white, new Vector2(uvx, uvy));
                if (j==num-1)
                {
                    float x0 = Mathf.Sin(0) * xr;
                    float z0 = Mathf.Cos(0) * xr;
                    vh.AddVert(new Vector3(x0, y, z0), Color.white, new Vector2(1, uvy));
                }
                if (i<num/2)
                {
                    vh.AddTriangle(i * (num + 1) + j, (i + 1) * (num + 1) + j, i* (num + 1) + j + 1);
                    vh.AddTriangle(i * (num + 1) + j+1, (i + 1) * (num + 1) + j, (i + 1) * (num + 1) + j + 1);
                }
            }
        }
        vh.FillMesh(mesh);
        GetComponent<MeshFilter>().mesh = mesh;
        GetComponent<MeshCollider>().sharedMesh = mesh;
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

柏林地图UV Plane

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Exam0915PlaneTool : MonoBehaviour
{
    public int num = 20;
    // Start is called before the first frame update
    void Start()
    {
        VertexHelper vh = new VertexHelper();
        Mesh mesh = new Mesh();
        for (int x = 0; x < num; x++)
        {
            for (int z = 0; z < num; z++)
            {
                float y = Mathf.PerlinNoise(x * 0.02f, z * 0.02f);
                Vector2 pos = new Vector2(((float)x / (num - 1)), ((float)z / (num - 1)));
                vh.AddVert(new Vector3(x, y*5, z), Color.white, pos);
                if (x<num-1&&z<num-1)
                {
                    vh.AddTriangle(x * num + z, x * num + z + 1, (x + 1) * num + z + 1);
                    vh.AddTriangle(x * num + z, (x + 1) * num + z + 1, (x + 1) * num + z);
                }
            }
        }
        vh.FillMesh(mesh);
        GetComponent<MeshFilter>().mesh = mesh;
        GetComponent<MeshCollider>().sharedMesh = mesh;
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Hypermesh是一种用于创建有限元分析模型网格的强大软件。它提供了丰富的工具和功能,使得网格创建过程变得更加高效和准确。 在使用Hypermesh网格时,首先需要导入几何模型。可以从CAD软件中导出几何模型文件,并在Hypermesh中打开。接下来,我们可以选择不同的网格类型来适应不同的分析需求,例如线性网格、二维网格或三维网格。 在创建网格之前,我们需要先定义几何模型上的划分区域。通过选择几何实体,对其进行划分,从而形成不同的网格单元。我们可以使用Hypermesh提供的划分工具,如自动划分、手动划分等,来快速分割几何实体,并根据需要进行网格的细分。 完成划分之后,我们可以进行网格的生成。Hypermesh提供了多种不同的网格生成器,如快速网格、正交网格、非结构化网格等。我们可以根据具体的分析需求和几何模型的特点,选择适合的网格生成方法。 生成网格后,我们可以对网格进行编辑和优化。Hypermesh提供了强大的编辑工具,如节点移动、边界条件设置、网格连接等。此外,Hypermesh还可以对网格进行优化,以提高网格质量和分析的准确性。 最后,我们可以将生成的网格导出为各种格式的文件,以供后续的有限元分析使用。Hypermesh支持多种文件格式的导出,如Nastran格式、Abaqus格式等。 总结来说,使用Hypermesh网格是一个相对简单而又高效的过程。通过选择合适的工具和方法,我们可以快速而准确地创建符合分析需求的网格模型。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值