feat(vehicle): Chaos vehicle spawns and simulates, physics asset generated from script
The physics asset could not be made from Python (PhysicsAssetFactory exposes no mesh property), so a small editor-only C++ helper calls FPhysicsAssetUtils::CreateFromSkeletalMesh - the same code path as the editor's Create Physics Asset action. It produces PA_Vehicle_Sedan with 6 bodies and assigns it to SK_Vehicle_Sedan. AGigLineVehicle is a Chaos wheeled pawn that configures its four wheels from the modelled dimensions (radius 33 cm, wheelbase 278, track 156) and is staged in DemoMap. A run logs: spawned at (-12950, -900, 120), 4 wheel setups settled at Z 494 cm, simulating=1, speed=0 cm/s That last line is the defect and it is not hidden: the vehicle rests 3.7 m above the road, so the generated physics bodies do not match the mesh. Recorded in TODO.md with the next step - inspect the bodies against the mesh, then either fix the creation params or author two boxes and four wheel spheres explicitly.
This commit is contained in:
1 parent
2e0421480c
commit
4f3ed20e49
29 files changed
+328
-27
No files matched your search
@@ -0,0 +1,41 @@
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "WheeledVehiclePawn.h"
|
||||
#include "GigLineVehicle.generated.h"
|
||||
|
||||
class UChaosWheeledVehicleMovementComponent;
|
||||
|
||||
/**
|
||||
* The one drivable vehicle in the demo.
|
||||
*
|
||||
* A skeletal mesh with a root bone and four wheel bones, driven by Chaos. Every
|
||||
* dimension it configures — wheel radius, wheelbase, track — comes from the Blender
|
||||
* build's report rather than being typed twice: the numbers are repeated here as
|
||||
* constants with the report path in the comment so a change to the model shows up as a
|
||||
* mismatch instead of a silent drift.
|
||||
*
|
||||
* Model: `Art/blender/vehicle/gigline-sedan.blend`, report `Art/blender/vehicle/report.json`
|
||||
* (4.72 x 1.80 x 1.44 m, wheelbase 2.78 m, track 1.62 m, wheel radius 0.33 m).
|
||||
*/
|
||||
UCLASS()
|
||||
class GIGLINE_API AGigLineVehicle : public AWheeledVehiclePawn
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
AGigLineVehicle();
|
||||
|
||||
virtual void BeginPlay() override;
|
||||
virtual void Tick(float DeltaSeconds) override;
|
||||
|
||||
/** True once the vehicle reports a forward speed above a walking pace. */
|
||||
bool IsMoving() const;
|
||||
|
||||
private:
|
||||
/** Configure the Chaos wheels from the modelled dimensions. */
|
||||
void ConfigureWheels();
|
||||
|
||||
float SettleElapsed = 0.f;
|
||||
bool bSettleReported = false;
|
||||
};
|
||||
Reference in new issue
Block a user