The following code is supposed to projects spheres points on a cube :
int UProcMeshTestComponent::AddVertex(FVector v, FVector normal)
{
int index = Vertices.Add(v);
Normals.Add(v.GetSafeNormal());
VertexColors.Add(FColor::White);
FProcMeshTangent tagent(v - normal, false);
Tangents.Add(tagent);
FPlane plane(normal, normal);
FVector uv3 = FMath::LinePlaneIntersection(v * 100.0f, FVector::ZeroVector, plane);
UE_LOG(LogTemp, Warning, TEXT("------------->normal is %s"), *normal.ToString());
UE_LOG(LogTemp, Warning, TEXT("plane is %s"), *plane.ToString());
UE_LOG(LogTemp, Warning, TEXT("v is %s"), *v.ToString());
UE_LOG(LogTemp, Warning, TEXT("uv projection is %s"), *uv3.ToString());
FVector2D uv(uv3.X, uv3.Y);
UV0.Add(uv);
return index;
}
And the log says for Z plane :
LogTemp:Warning: ------------->normal is X=0.000 Y=-0.000 Z=1.000
LogTemp:Warning: plane is X=0.000 Y=-0.000 Z=1.000
LogTemp:Warning: v is X=0.707 Y=0.707 Z=-0.000
LogTemp:Warning: uv projection is X=-2767519.000 Y=-2767521.000 Z=1.000
LogTemp:Warning: ------------->normal is X=0.000 Y=-0.000 Z=1.000
LogTemp:Warning: plane is X=0.000 Y=-0.000 Z=1.000
LogTemp:Warning: v is X=0.707 Y=0.000 Z=-0.707
LogTemp:Warning: uv projection is X=-1.000 Y=0.000 Z=1.000
LogTemp:Warning: ------------->normal is X=0.000 Y=-0.000 Z=1.000
LogTemp:Warning: plane is X=0.000 Y=-0.000 Z=1.000
LogTemp:Warning: v is X=0.707 Y=-0.707 Z=0.000
LogTemp:Warning: uv projection is X=1614387.250 Y=-1614386.375 Z=1.000
LogTemp:Warning: ------------->normal is X=0.000 Y=-0.000 Z=1.000
LogTemp:Warning: plane is X=0.000 Y=-0.000 Z=1.000
LogTemp:Warning: v is X=0.707 Y=0.000 Z=0.707
LogTemp:Warning: uv projection is X=1.000 Y=0.000 Z=1.000
X=-2767519.000 Y=-2767521.000 Z=1.000 <---- !!!