전문가용 물결무늬 스타일(루프)
13975 단어 Unity
Torus.cs
using UnityEngine;
[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
public class Torus : MonoBehaviour
{
[SerializeField] private float majorRadius = 3f;
[SerializeField] private float minorRadius = 1f;
[SerializeField] private int thetaSegments = 8;
[SerializeField] private int phiSegments = 8;
private void Awake()
{
Mesh mesh = new Mesh();
GetComponent<MeshFilter>().mesh = mesh;
Vector3[] vertices = new Vector3[thetaSegments * phiSegments];
int[] triangles = new int[thetaSegments * phiSegments * 2 * 3];
float thetaStep = Mathf.PI * 2.0f / thetaSegments;
float phiStep = Mathf.PI * 2.0f / phiSegments;
int vi = 0;
for (int hi = 0; hi < thetaSegments; hi++)
{
Quaternion rot = Quaternion.AngleAxis(hi * thetaStep * Mathf.Rad2Deg, Vector3.up);
for (int pi = 0; pi < phiSegments; pi++)
{
float phi = pi * phiStep;
vertices[vi++] = rot * new Vector3(majorRadius + minorRadius * Mathf.Cos(phi), minorRadius * Mathf.Sin(phi), 0);
}
}
int ti = 0;
for (int hi = 0; hi < thetaSegments; hi++)
{
int hj = hi != thetaSegments - 1 ? hi + 1 : 0;
for (int pi = 0; pi < phiSegments; pi++)
{
int pj = pi != phiSegments - 1 ? pi + 1 : 0;
int v00 = pi + hi * phiSegments;
int v10 = pj + hi * phiSegments;
int v01 = pi + hj * phiSegments;
int v11 = pj + hj * phiSegments;
ti = MakeQuad(triangles, ti, v00, v10, v01, v11);
}
}
mesh.vertices = vertices;
mesh.triangles = triangles;
mesh.RecalculateNormals();
}
private int MakeQuad(int[] triangles, int ti, int v00, int v10, int v01, int v11)
{
triangles[ti] = v00;
triangles[ti + 1] = triangles[ti + 5] = v01;
triangles[ti + 2] = triangles[ti + 4] = v10;
triangles[ti + 3] = v11;
return ti + 6;
}
}
majorRadius
에서는 도넛의 동그라미 크기를, minorRadius
에서는 도넛의 굵기를 지정할 수 있다.또한 thetaSegments
도넛의 분할 수를 phiSegments
로 지정하고 굵은 부분의 분할 수를 지정합니다.메쉬의 정점과 삼각형은 다음과 같이 구성되어 있다.
정점 위치를 직접 계산하기 어려우므로 xy평면에 한 번 배치한 다음에 이산화티타늄에서 y축에 비해 회전하여 적당한 값으로 만든다.
트러스트는 바닥과 위가 연결된 원통으로 볼 수 있기 때문에 삼각형의 구조는 원통과 같다.원통의 망상물이전 기사에 대해 설명하였으니 참고하시기 바랍니다.
Reference
이 문제에 관하여(전문가용 물결무늬 스타일(루프)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/aa_debdeb/items/efc188aa3c03a8acc5b9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)