UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CADKernelEngineDefinitions.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6
7#include "CADKernelEngineDefinitions.generated.h"
8
9UENUM()
18
19UENUM()
26
27USTRUCT(BlueprintType)
29{
31
32 // value from FDatasmithUtils::ECADKernelModelCoordSystem
33 UPROPERTY()
35
36 UPROPERTY()
37 float ModelUnitToCentimeter = 1.; // Model is in centimeters
38
39 UPROPERTY()
40 float ScaleFactor = 1.0f;
41
42 bool FromJson(const FString& JsonString) const { return false; }
43 FString ToJson() const { return {}; }
44};
45
46USTRUCT(BlueprintType)
48{
50
51 UPROPERTY()
52 bool bNeedSwapOrientation = false;
53
54 UPROPERTY()
55 bool bIsSymmetric = false;
56
57 UPROPERTY()
58 FVector SymmetricOrigin = FVector::ZeroVector;
59
60 UPROPERTY()
61 FVector SymmetricNormal = FVector::ZeroVector;
62
63 UPROPERTY()
64 float ScaleFactor = 1.0f;
65
66 bool FromJson(const FString& JsonString) const { return false; }
67 FString ToJson() const { return {}; }
68};
69
70USTRUCT(BlueprintType)
72{
74
76 double InChordTolerance = 0.2,
77 double InMaxEdgeLength = 0.0,
78 double InNormalTolerance = 20.0,
80 double InGeometricTolerance = 0.001,
81 double InStichingTolerance = 0.001,
83 )
84 : ChordTolerance(InChordTolerance)
85 , MaxEdgeLength(InMaxEdgeLength)
86 , NormalTolerance(InNormalTolerance)
87 , StitchingTechnique(InStitchingTechnique)
88 , bUseCADKernel(bInUseCADKernel)
90 , StitchingTolerance(InStichingTolerance)
91 {
92 }
93
94protected:
100 UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Geometry & Tessellation Options", meta = (Units = cm, ToolTip = "Maximum distance between any generated triangle and the original surface. Smaller values make more triangles.", ClampMin = "0.005"))
101 double ChordTolerance;
102
109 UPROPERTY(config, EditAnywhere, BlueprintReadWrite, AdvancedDisplay, Category = "Geometry & Tessellation Options", meta = (Units = cm, DisplayName = "Max Edge Length", ToolTip = "Maximum length of any edge in the generated triangles. Smaller values make more triangles.", ClampMin = "0.0"))
110 double MaxEdgeLength;
111
112public:
118 UPROPERTY(config, EditAnywhere, BlueprintReadWrite, AdvancedDisplay, Category = "Geometry & Tessellation Options", meta = (Units = deg, ToolTip = "Maximum angle between adjacent triangles. Smaller values make more triangles.", ClampMin = "5.0", ClampMax = "90.0"))
119 double NormalTolerance;
120
121
129 UPROPERTY(config, EditAnywhere, BlueprintReadWrite, AdvancedDisplay, Category = "Geometry & Tessellation Options", meta = (ToolTip = "Stitching technique applied on model before tessellation. Sewing could impact number of objects."))
131
135 UPROPERTY(config, EditAnywhere, BlueprintReadWrite, AdvancedDisplay, Category = "Geometry & Tessellation Options", meta = (DisplayName = "Use CADKernel", Tooltip = "When true uses CADKernel tessellator. Otherwise, TechSoft's tessellator is used. Default is true.", editCondition = "bWithTechSoft == true"))
136 bool bUseCADKernel = true;
137
141 UPROPERTY(config, EditAnywhere, BlueprintReadWrite, AdvancedDisplay, Category = "Geometry & Tessellation Options", meta = (Tooltip = "If true, enables the removal of T-Junctions from the resulting mesh. Default is false."))
142 bool bResolveTJunctions = false;
143
151 UPROPERTY(config, EditAnywhere, BlueprintReadWrite, AdvancedDisplay, Category = "Geometry & Tessellation Options", meta = (Units = cm, ToolTip = "Tolerance used to determine if a surface should be tessellated or not."))
152 double GeometricTolerance = 0.001;
153
158 UPROPERTY(config, EditAnywhere, BlueprintReadWrite, AdvancedDisplay, Category = "Geometry & Tessellation Options", meta = (Units = cm, ToolTip = "Tolerance used to determine if two surfaces should be stitched.", editCondition = "StitchingTechnique!=ECADKernelStitchingTechnique::StitchingNone"))
159 double StitchingTolerance = 0.001;
160
161public:
162 /*
163 ** Value to convert imported geometrical values to cm which is UE's unit.
164 ** Default value is 0.1 as CADKernel's and most CAD formats' unit is millimeter.
165 */
166 // #cadkernel_check: Verify that this new logic is properly used everywhere.
167 UPROPERTY()
168 double UnitMultiplier = 0.1;
169
171 bool bWithTechSoft = bWithHoops;
172
173 static bool bWithHoops;
174
175 bool operator == (const FCADKernelTessellationSettings& Other) const
176 {
177 return FMath::IsNearlyEqual(ChordTolerance, Other.ChordTolerance)
178 && FMath::IsNearlyEqual(MaxEdgeLength, Other.MaxEdgeLength)
179 && FMath::IsNearlyEqual(NormalTolerance, Other.NormalTolerance)
180 && StitchingTechnique == Other.StitchingTechnique
181 && FMath::IsNearlyEqual(GeometricTolerance, Other.GeometricTolerance)
182 && FMath::IsNearlyEqual(StitchingTolerance, Other.StitchingTolerance);
183 }
184
186 {
187 uint32 Hash = uint32(StitchingTechnique);
188 for (double Param : {ChordTolerance, MaxEdgeLength, NormalTolerance, GeometricTolerance, StitchingTolerance})
189 {
190 Hash = HashCombine(Hash, GetTypeHash(Param));
191 }
192 return Hash;
193 }
196 double GetStitchingTolerance(bool bInMillimeter = false) const { return bInMillimeter ? StitchingTolerance * 10. : StitchingTolerance; }
197 double GetChordTolerance(bool bInMillimeter = false) const { return bInMillimeter ? ChordTolerance * 10. : ChordTolerance; }
198 double GetMaxEdgeLength(bool bInMillimeter = false) const { return bInMillimeter ? MaxEdgeLength * 10. : MaxEdgeLength; }
199
200 bool FromJson(const FString& JsonString) const { return false; }
201 FString ToJson() const { return {}; }
202};
203
204UENUM()
210
211USTRUCT(BlueprintType)
231
232namespace UE::CADKernel
233{
243
245 {
246 bool bLoadGeometryOnly = true;
247 bool bLoadLoadNoDependency = false;
248 bool bLoadStructureOnly = false;
249 };
250
258
265}
EGLSurface surface
Definition AndroidOpenGLFunctions.h:9
EGLSurface EGLint const EGLint EGLnsecsANDROID * values
Definition AndroidOpenGLFunctions.h:11
ECADKernelRetessellationRule
Definition CADKernelEngineDefinitions.h:206
ECADKernelStitchingTechnique
Definition CADKernelEngineDefinitions.h:21
ECADKernelModelCoordSystem
Definition CADKernelEngineDefinitions.h:11
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
if(Failed) console_printf("Failed.\n")
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition IsoTriangulatorRemoveIntersection.cpp:13
Definition AdvancedWidgetsModule.cpp:13
@ false
Definition radaudio_common.h:23
Definition CADKernelEngineDefinitions.h:48
FString ToJson() const
Definition CADKernelEngineDefinitions.h:67
Definition CADKernelEngineDefinitions.h:29
FString ToJson() const
Definition CADKernelEngineDefinitions.h:43
Definition CADKernelEngineDefinitions.h:213
FCADKernelRetessellationSettings(const FCADKernelTessellationSettings &TessellationSettings, ECADKernelRetessellationRule InRetessellationRule=ECADKernelRetessellationRule::AllFaces)
Definition CADKernelEngineDefinitions.h:222
Definition CADKernelEngineDefinitions.h:72
double GetMaxEdgeLength(bool bInMillimeter=false) const
Definition CADKernelEngineDefinitions.h:198
bool FromJson(const FString &JsonString) const
Definition CADKernelEngineDefinitions.h:200
double GetGeometricTolerance(bool bInMillimeter=false) const
Definition CADKernelEngineDefinitions.h:195
ECADKernelStitchingTechnique StitchingTechnique
Definition CADKernelEngineDefinitions.h:130
double GetStitchingTolerance(bool bInMillimeter=false) const
Definition CADKernelEngineDefinitions.h:196
double GetChordTolerance(bool bInMillimeter=false) const
Definition CADKernelEngineDefinitions.h:197
uint32 GetHash() const
Definition CADKernelEngineDefinitions.h:185
FString ToJson() const
Definition CADKernelEngineDefinitions.h:201
static UE_FORCEINLINE_HINT bool IsNearlyEqual(float A, float B, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:388
Definition CADKernelEngineDefinitions.h:252
FCADKernelModelParameters ModelParams
Definition CADKernelEngineDefinitions.h:253
FCADKernelMeshParameters MeshParams
Definition CADKernelEngineDefinitions.h:254
TSet< int32 > FaceGroupsToExtract
Definition CADKernelEngineDefinitions.h:255
Definition CADKernelEngineDefinitions.h:245
Definition CADKernelEngineDefinitions.h:260
FCADKernelTessellationSettings TessellationSettings
Definition CADKernelEngineDefinitions.h:261
CADKERNELENGINE_API FTessellationContext()
Definition CADKernelEngineDefinitions.h:262
CADKERNELENGINE_API FTessellationContext(const FCADKernelModelParameters &ModelParams, const FCADKernelMeshParameters &MeshParams, const FCADKernelRetessellationSettings &Settings)
Definition CADKernelEngineDefinitions.h:235
static const double CADKERNELENGINE_API MillimeterToCentimeter
Definition CADKernelEngineDefinitions.h:237
static const double CADKERNELENGINE_API CentimeterToMillimeter
Definition CADKernelEngineDefinitions.h:236
static const double CADKERNELENGINE_API CentimeterToMeter
Definition CADKernelEngineDefinitions.h:238
static const double CADKERNELENGINE_API MillimeterToMeter
Definition CADKernelEngineDefinitions.h:240
static const double CADKERNELENGINE_API MeterToCentimeter
Definition CADKernelEngineDefinitions.h:239
static const double CADKERNELENGINE_API MeterToMillimeter
Definition CADKernelEngineDefinitions.h:241