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.
42 lines
1.2 KiB
C++
42 lines
1.2 KiB
C++
#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;
|
|
};
|