qa wip: collide site meshes, spawn cap above grade (still investigating fall-through)
- ue_import_site.py: auto_generate_collision=True so FBX static meshes get real collision geometry (they imported with none -> complex-as-simple had nothing to use, player fell through). - ue_build_demo_map.py: PlayerStart cap raised to Z300 so the capsule feet start above the ~Z99-138 terrain surface there (an embedded spawn point is rejected -> 'NO PLAYERSTART with positive rating' -> origin fallback). - Re-imported site meshes + rebuilt DemoMap with the above. KNOWN-UNRESOLVED: packaged plain launch still spawns the capsule around Z-123 and falls; downward trace finds no geometry. Map assets are all present in the pak and referenced; runtime collision behavior needs a visual/interactive check (headless commandlet traces are unreliable). Investigate on this branch; do not merge to main.
This commit is contained in:
1 parent
1cc487b916
commit
eb199ccce6
9 files changed
+20
-11
No files matched your search
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -372,11 +372,14 @@ def build():
|
||||
# sidewalk is at Y -1912..-1053 and the SOUTH sidewalk at Y +718..+1447.
|
||||
# The hero facade is on the SOUTH side at Y +1307. Stand on the north
|
||||
# sidewalk and face south (+Y, yaw 90) across the road at it.
|
||||
# Z 200 is clear air so the capsule settles onto the pavement instead of
|
||||
# spawning embedded or below grade (the fall-through QA finding).
|
||||
spawn(unreal.PlayerStart, unreal.Vector(-13336.0, -1700.0, 200.0), "Demo_PlayerStart",
|
||||
# Z: the terrain here is ~Z 99-138. The capsule half-height is 87.5 cm, so
|
||||
# feet must start ABOVE the surface or the point is embedded and UE rejects
|
||||
# the PlayerStart ("NO PLAYERSTART with positive rating"), dropping the pawn
|
||||
# at the world origin to fall through. Cap feet ~80 cm above grade: centre
|
||||
# ~138+80+87 = 305, so Z 300 lets it drop cleanly and gravity settles it.
|
||||
spawn(unreal.PlayerStart, unreal.Vector(-13336.0, -1700.0, 300.0), "Demo_PlayerStart",
|
||||
unreal.Rotator(pitch=0.0, yaw=90.0, roll=0.0))
|
||||
log("staged: Demo_PlayerStart on the north sidewalk facing south (+Y)")
|
||||
log("staged: Demo_PlayerStart on the north sidewalk (cap above grade), facing south (+Y)")
|
||||
|
||||
# A lockable LFS .umap checks out read-only, which makes save_map silently
|
||||
# return False — chmod u+w first or the staged actors never persist.
|
||||
|
||||
@@ -50,6 +50,12 @@ def import_fbx(path, name, collision="complex"):
|
||||
smd.convert_scene_unit = False
|
||||
smd.force_front_x_axis = False
|
||||
smd.normal_import_method = unreal.FBXNormalImportMethod.FBXNIM_IMPORT_NORMALS
|
||||
# Generate collision at import. A default FBX static-mesh import creates NO
|
||||
# collision primitives, so CTF_USE_COMPLEX_AS_SIMPLE later has nothing to use
|
||||
# and the player falls through the walkable surfaces (observed at runtime:
|
||||
# ground trace under the spawn hits nothing). auto_generate_collision bakes
|
||||
# collision geometry into the mesh so the walkable plane actually blocks.
|
||||
smd.auto_generate_collision = True
|
||||
task.options = ui
|
||||
unreal.AssetToolsHelpers.get_asset_tools().import_asset_tasks([task])
|
||||
|
||||
|
||||
Reference in new issue
Block a user