Ich dachte, es war, dass es sich um die Segmente handelte. Mit dem Code von hier: Subdivide Bezier -Kurven habe ich die Kurve in gleiche Segmente unterteilt, aber das Ergebnis änderte sich in keiner Weise. /> < /p>
Hier ist der Code zum Erstellen eines Netzes: < /p>
Code: Select all
for (int j = 0; j < numSegmentsPerCurve; j++)
{
float t = j / (float)numSegmentsPerCurve;
Vector3 point = Bezier.GetPosition(p0, p1, p2, p3, t);
pointsForDraw.Add(point);
Vector3 point_derivative = Bezier.GetDerivative(p0, p1, p2, p3, t);
Vector3 point_tangent = Vector3.Cross(point_derivative, Vector3.up).normalized;
float half_width = roadWidth * 0.5f;
var vert1 = point - point_tangent * half_width;
var vert2 = point + point_tangent * half_width;
v += 0.1f;
vertices.Add(vert1);
vertices.Add(vert2);
uvs.Add(new Vector2(0.0f, v * size_tex));
uvs.Add(new Vector2(1.0f, v * size_tex));
}
Code: Select all
Shader "Custom/test"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
float4x4 g_matLocalToClip;
Texture2D _MainTex;
SamplerState sampler_MainTex;
struct VertexData
{
float3 pos : POSITION;
float3 uvq : TEXCOORD0;
};
void vert( VertexData vtx, out float3 uvq : TEXCOORD0, out float4 posClip : SV_Position)
{
posClip = mul(float4(vtx.pos, 1.0), g_matLocalToClip);
uvq = vtx.uvq;
}
void frag( float3 uvq : TEXCOORD0, out half4 o_rgba : SV_Target)
{
o_rgba = _MainTex.Sample(sampler_MainTex, uvq.xy / uvq.z);
}
ENDCG
}
}
}
Ich denke, ich mache etwas falsches. Könnte es sein, weil ich Unity URP benutze? Könnten Sie mir auf den Fehler hinweisen?