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
@@ -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