From d389c2f528a70539b4bd66750461d3557fc06f04 Mon Sep 17 00:00:00 2001 From: Timon Roemer <t.roemer@vis.rwth-aachen.de> Date: Tue, 23 Jul 2024 14:21:00 +0200 Subject: [PATCH] Improves MagicWand Selection --- Config/DefaultEngine.ini | 3 +- Content/MagicWandMap.umap | Bin 43681 -> 44313 bytes Content/MagicWandPawn.uasset | Bin 68061 -> 68203 bytes Source/MetaCastBachelor/MagicWand.cpp | 161 +++++++++++++++++++------- Source/MetaCastBachelor/MagicWand.h | 27 +++-- 5 files changed, 140 insertions(+), 51 deletions(-) diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini index 05ba680..794b800 100644 --- a/Config/DefaultEngine.ini +++ b/Config/DefaultEngine.ini @@ -129,7 +129,8 @@ r.MobileHDR=False r.MSAACount=4 r.Mobile.ShadingPath=1 r.ForwardShading=True -r.CustomDepth=1 +r.CustomDepth=0 +r.CustomDepthTemporalAAJitter=False [/Script/HardwareTargeting.HardwareTargetingSettings] TargetedHardwareClass = Mobile diff --git a/Content/MagicWandMap.umap b/Content/MagicWandMap.umap index 9f01f84e975af728177b785d429e26e6ba8ef2b2..4e7456218f05c4b5c26de3ca4d0b7adcdecfd53e 100644 GIT binary patch literal 44313 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 KpDc(EQV#%(&YC6w literal 43681 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 diff --git a/Content/MagicWandPawn.uasset b/Content/MagicWandPawn.uasset index 9472186a5940e9e6147f87a741f1b214548baeff..de43aeb2f5e2148db4609a84bffcf1dd9b746344 100644 GIT binary patch delta 18709 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 delta 17073 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 diff --git a/Source/MetaCastBachelor/MagicWand.cpp b/Source/MetaCastBachelor/MagicWand.cpp index 90a4ca4..39877f5 100644 --- a/Source/MetaCastBachelor/MagicWand.cpp +++ b/Source/MetaCastBachelor/MagicWand.cpp @@ -1,5 +1,6 @@ #include "MagicWand.h" #include "Utilities.h" +#include "Components/LineBatchComponent.h" #include "Generators/MarchingCubes.h" // INITIALIZATION @@ -8,6 +9,7 @@ UMagicWand::UMagicWand() : World(nullptr) { // Create the procedural mesh component ProceduralMesh = CreateDefaultSubobject<UProceduralMeshComponent>(TEXT("GeneratedMesh")); + MyLineBatchComponent = CreateDefaultSubobject<ULineBatchComponent>(TEXT("LineDrawer")); } void UMagicWand::BeginPlay() @@ -20,7 +22,7 @@ void UMagicWand::BeginPlay() void UMagicWand::InitProceduralMesh() const { - ProceduralMesh->AttachToComponent(MyPointCloud->PointCloudVisualizer, FAttachmentTransformRules::SnapToTargetIncludingScale); + //ProceduralMesh->AttachToComponent(MyPointCloud->PointCloudVisualizer, FAttachmentTransformRules::SnapToTargetIncludingScale); ProceduralMesh->SetMaterial(0, SelectionVolumeMat); ProceduralMesh->SetMaterial(1, SelectionVolumeMat); ProceduralMesh->SetMaterial(2, SelectionVolumeMat); @@ -182,39 +184,113 @@ void UMagicWand::GenerateVoxelMeshSmooth(const TArray<int32> Voxels) FScopeLock MeshLock(&ProceduralMeshGuard); ProceduralMesh->CreateMeshSection(0, Vertices, Indices, Normals, TArray<FVector2D>(), VertexColors, TArray<FProcMeshTangent>(), false); ProceduralMesh->SetVisibility(true); - AccumulatedTime.Store(0); IsMarchingCubesRunning = false; }); }); } +void UMagicWand::DrawPersistentLine(const FVector& Start, const FVector& End, const FColor& Color, const float Duration, const float Thickness) const +{ + if (MyLineBatchComponent) + { + MyLineBatchComponent->DrawLine(Start, End, Color, 0, Thickness, Duration); + } +} + +void UMagicWand::GenerateCylinderBetweenPoints(const FVector& Start, const FVector& End, const float Radius, const int32 NumSides, const FColor Color, const int MeshSectionIndex) const +{ + FVector Axis = End - Start; + Axis.Normalize(); + + TArray<FVector> Vertices; + TArray<int32> Triangles; + TArray<FVector> Normals; + TArray<FVector2D> UVs; + TArray<FProcMeshTangent> Tangents; + + // Bottom cap + int32 VertIndex = 0; + Vertices.Add(Start); // Center bottom + Normals.Add(-Axis); + UVs.Add(FVector2D(0.5f, 0.5f)); + for (int i = 0; i <= NumSides; i++) + { + const float Angle = FMath::DegreesToRadians((360.f / NumSides) * i); + FVector Point = Start + Radius * FVector(FMath::Cos(Angle), FMath::Sin(Angle), 0); + Vertices.Add(Point); + Normals.Add(-Axis); + UVs.Add(FVector2D(FMath::Cos(Angle) * 0.5f + 0.5f, FMath::Sin(Angle) * 0.5f + 0.5f)); + + if (i > 0) + { + Triangles.Add(VertIndex); + Triangles.Add(VertIndex + i); + Triangles.Add(VertIndex + i + 1); + } + } + + // Side faces + const int32 BottomCenterIndex = VertIndex; + const int32 TopCenterIndex = Vertices.Num(); + Vertices.Add(End); // Center top + Normals.Add(Axis); + UVs.Add(FVector2D(0.5f, 0.5f)); + VertIndex++; + for (int i = 0; i <= NumSides; i++) + { + const float Angle = FMath::DegreesToRadians((360.f / NumSides) * i); + FVector Point = End + Radius * FVector(FMath::Cos(Angle), FMath::Sin(Angle), 0); + Vertices.Add(Point); + Normals.Add(Axis); + UVs.Add(FVector2D(FMath::Cos(Angle) * 0.5f + 0.5f, FMath::Sin(Angle) * 0.5f + 0.5f)); + + if (i > 0) + { + // Connect bottom and top + Triangles.Add(BottomCenterIndex + i); + Triangles.Add(TopCenterIndex + i); + Triangles.Add(BottomCenterIndex + i + 1); + + Triangles.Add(TopCenterIndex + i); + Triangles.Add(TopCenterIndex + i + 1); + Triangles.Add(BottomCenterIndex + i + 1); + } + } + + TArray<FLinearColor> VertexColors; + VertexColors.Init(Color, Vertices.Num()); + + // Create mesh + ProceduralMesh->CreateMeshSection_LinearColor(MeshSectionIndex, Vertices, Triangles, Normals, TArray<FVector2D>(), VertexColors, TArray<FProcMeshTangent>(), false); +} + // INPUT HANDLING +void UMagicWand::HandleMetaSelectPressed(const FInputActionInstance& Instance) +{ + Super::HandleMetaSelectPressed(Instance); + + const FVector SelectionStartPositionWorld = SelectionObject->GetComponentLocation(); + const FVector SelectionStartPositionLocal = MyPointCloud->PointCloudVisualizer->GetComponentTransform().InverseTransformPosition(SelectionStartPositionWorld); + + FindSeed(SelectionStartPositionLocal); +} + void UMagicWand::HandleMetaSelectReleased(const FInputActionInstance& Instance) { Super::HandleMetaSelectReleased(Instance); const FVector SelectionWorldPosition = SelectionObject->GetComponentLocation(); const FVector SelectionLocalPosition = MyPointCloud->PointCloudVisualizer->GetComponentTransform().InverseTransformPosition(SelectionWorldPosition); - - ProximityThreshold = FMath::Clamp(FVector::Dist(SelectionStartPosition, SelectionLocalPosition) / 10, 0.1, 8); - + InitMagicWandSelection(); AsyncTask(ENamedThreads::Type::AnyBackgroundHiPriTask, [this, &SelectionLocalPosition]() { - PerformMagicWandSelection(SelectionStartPosition); + PerformMagicWandSelection(); }); } -void UMagicWand::HandleMetaSelectPressed(const FInputActionInstance& Instance) -{ - Super::HandleMetaSelectPressed(Instance); - - const FVector SelectionWorldPosition = SelectionObject->GetComponentLocation(); - SelectionStartPosition = MyPointCloud->PointCloudVisualizer->GetComponentTransform().InverseTransformPosition(SelectionWorldPosition); -} - void UMagicWand::HandleMetaEraseReleased(const FInputActionInstance& Instance) { Super::HandleMetaEraseReleased(Instance); @@ -235,11 +311,10 @@ void UMagicWand::InitMagicWandSelection() { ProceduralMesh->ClearAllMeshSections(); AbortMarchingCubes = true; - if(AccumulatedTime.Load() >= 0) AccumulatedTime.Store(1 / EvaluationsPerSecond); AbortMagicWand.Store(false); } -void UMagicWand::PerformMagicWandSelection(const FVector& InputPosition) +void UMagicWand::PerformMagicWandSelection() { if (MyPointCloud->SelectionFlags.Num() != MyPointCloud->PositionVectors.Num()) { @@ -250,28 +325,22 @@ void UMagicWand::PerformMagicWandSelection(const FVector& InputPosition) //UE_LOG(LogTemp, Warning, TEXT("Starting MagicWand Selection!")); // Find the closest point to the input position as the seed - int32 SeedIndex; - const int32 InputVoxelIndex = MyDensityField->WorldPositionToIndex(InputPosition); - FindSeedIndex(InputPosition, InputVoxelIndex, SeedIndex); - if (SeedIndex != INDEX_NONE) + if (SeedPointIndex != INDEX_NONE) { - ExpandSelectionFromPointIndex(SeedIndex); - }else - { - AccumulatedTime.Store( 0); + ExpandSelectionFromPointIndex(SeedPointIndex); } } -void UMagicWand::FindSeedIndex(const FVector& InputPosition, const int32 InputVoxelIndex, int32& SeedIndex) const +void UMagicWand::FindSeed(const FVector& InputPosition) { + const int32 InputVoxelIndex = MyDensityField->WorldPositionToIndex(InputPosition); TArray<int32> Neighbors = MyDensityField->IndexToVoxelNeighbors(InputVoxelIndex); Neighbors.Add(InputVoxelIndex); - - SeedIndex = INDEX_NONE; float MinDistance = FLT_MAX; + SeedPointIndex = INDEX_NONE; - for(int NeighborDistance = 0; NeighborDistance < 4; ++NeighborDistance) + for(int NeighborDistance = 0; NeighborDistance < 5; ++NeighborDistance) { const int NumNeighbors = Neighbors.Num(); @@ -289,26 +358,30 @@ void UMagicWand::FindSeedIndex(const FVector& InputPosition, const int32 InputVo } } } - - + for (const int CurrentNeighborIndex : Neighbors) { TArray<int32> PointIndices = MyDensityField->VoxelPointLookupTable->GetPointsInVoxel(CurrentNeighborIndex); for(const int32 CurrentIndex : PointIndices) { - FVector CurrentPosition = MyDensityField->IndexToVoxelPosition(CurrentIndex); + FVector CurrentPosition = MyPointCloud->PositionVectors[CurrentIndex]; const float Distance = FVector::Dist(InputPosition, CurrentPosition); if (Distance < MinDistance) { MinDistance = Distance; - SeedIndex = CurrentIndex; + SeedPointIndex = CurrentIndex; } } } + + if(SeedPointIndex != INDEX_NONE) + { + SeedPointPositionLocal = MyPointCloud->PositionVectors[SeedPointIndex]; + } } -void UMagicWand::ExpandSelectionFromPointIndex(const int32 SeedIndex) +void UMagicWand::ExpandSelectionFromPointIndex(const int32 PointIndex) { { FScopeLock Lock(&ThreadNumberLock); @@ -316,8 +389,8 @@ void UMagicWand::ExpandSelectionFromPointIndex(const int32 SeedIndex) } TQueue<int32>* ProcessQueue = new TQueue<int32>{}; - ProcessQueue->Enqueue(SeedIndex); - MyPointCloud->SelectionFlags[SeedIndex] = true; + ProcessQueue->Enqueue(PointIndex); + MyPointCloud->SelectionFlags[PointIndex] = true; const float SquaredProximityThreshold = ProximityThreshold * ProximityThreshold; int NumberToProcess = 0; @@ -419,7 +492,6 @@ void UMagicWand::AbortSelection() //UE_LOG(LogTemp, Warning, TEXT("Thread Closed! Number of Threads now: %d"), NumberThreads.GetValue()); if(NumberThreads.GetValue() == 0) { - AccumulatedTime.Store(0); //AbortMagicWand.Store(false); //UE_LOG(LogTemp, Warning, TEXT("Aborted!")); }else if(NumberThreads.GetValue() < 0) @@ -460,11 +532,16 @@ void UMagicWand::TickComponent(const float DeltaTime, const ELevelTick TickType, void UMagicWand::SelectParticles(const FVector& InputPosition) { - if (AccumulatedTime.Load() >= 1 / EvaluationsPerSecond) - { - AccumulatedTime.Store(FLT_MIN); - } + const FVector CurrentSelectionPositionWorld = SelectionObject->GetComponentLocation(); + const FVector CurrentSelectionPositionLocal = MyPointCloud->PointCloudVisualizer->GetComponentTransform().InverseTransformPosition(CurrentSelectionPositionWorld); + ProximityThreshold = FMath::Clamp(FVector::Dist(SeedPointPositionLocal, CurrentSelectionPositionLocal) / ThresholdDistanceScaling, MinThreshold, MaxThreshold); - const FVector SelectionWorldPosition = SelectionObject->GetComponentLocation(); - DrawDebugLine(World, SelectionWorldPosition, MyPointCloud->PointCloudVisualizer->GetComponentTransform().TransformPosition(SelectionStartPosition), FColor::Red, false, 0, 0, 0.1f); + const FVector SelectionDirectionLocal = CurrentSelectionPositionLocal - SeedPointPositionLocal; + const FVector ProximityEndPointLocal = SeedPointPositionLocal + (SelectionDirectionLocal.GetSafeNormal() * ProximityThreshold); + + const FVector SelectionStartPositionWorld = MyPointCloud->PointCloudVisualizer->GetComponentTransform().TransformPosition(SeedPointPositionLocal); + const FVector ProximityEndPointWorld = MyPointCloud->PointCloudVisualizer->GetComponentTransform().TransformPosition(ProximityEndPointLocal); + + GenerateCylinderBetweenPoints(SelectionStartPositionWorld, ProximityEndPointWorld, 0.05, 8, FColor::Red, 1); + GenerateCylinderBetweenPoints((CurrentSelectionPositionWorld - ProximityEndPointWorld).GetSafeNormal() * 0.05 + ProximityEndPointWorld, CurrentSelectionPositionWorld, 0.05, 8, FColor::Green, 0); } \ No newline at end of file diff --git a/Source/MetaCastBachelor/MagicWand.h b/Source/MetaCastBachelor/MagicWand.h index 0037e3b..683796a 100644 --- a/Source/MetaCastBachelor/MagicWand.h +++ b/Source/MetaCastBachelor/MagicWand.h @@ -25,19 +25,27 @@ class UMagicWand : public UMetaCastBaseline UProceduralMeshComponent* ProceduralMesh; UPROPERTY() UWorld* World; - TAtomic<float> AccumulatedTime = 0.0; - FVector SelectionStartPosition; + FVector SeedPointPositionLocal; + UPROPERTY() + ULineBatchComponent* MyLineBatchComponent; + float ProximityThreshold = 0.1f; + float MarchingCubeSize = 0; + int32 SeedPointIndex; // USER EXPORTED UPROPERTY(EditAnywhere) - float MarchingCubeSize = 0; + float ThresholdDistanceScaling = 20; + UPROPERTY(EditAnywhere) - int EvaluationsPerSecond = 10; + float MinThreshold = 0.1; + UPROPERTY(EditAnywhere) - float ProximityThreshold = 0.1f; + float MaxThreshold = 8; + UPROPERTY(EditAnywhere) UMaterialInterface* SelectionVolumeMat; + UPROPERTY(EditAnywhere) int MaxThreadCount = 100; @@ -64,9 +72,10 @@ public: // MAGIC WAND SELECTION void InitMagicWandSelection(); - void FindSeedIndex(const FVector& InputPosition, int32 InputVoxelIndex, int32& SeedIndex) const; - void PerformMagicWandSelection(const FVector& InputPosition); - void ExpandSelectionFromPointIndex(int32 SeedIndex); + void FindSeedIndex(const FVector& InputPosition, int32& SeedIndex) const; + void PerformMagicWandSelection(); + void FindSeed(const FVector& InputPosition); + void ExpandSelectionFromPointIndex(int32 PointIndex); void ExpandSelectionFromPointIndexQueue(TQueue<int32>* ProcessQueue); void ExpandThroughNeighborsInRange(TQueue<int32>* ProcessQueue, const float SquaredProximityThreshold, int& NumberToProcess, const FVector& CurrentQueuePointPosition) const; void AbortSelection(); @@ -76,4 +85,6 @@ public: virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; virtual void SelectParticles(const FVector& InputPosition) override; + void DrawPersistentLine(const FVector& Start, const FVector& End, const FColor& Color, float Duration, float Thickness) const; + void GenerateCylinderBetweenPoints(const FVector& Start, const FVector& End, const float Radius, const int32 NumSides, const FColor Color, const int MeshSectionIndex) const; }; \ No newline at end of file -- GitLab