用途
该技能用于射击类游戏(FPS/TPS)的地图与道具制作,重点处理视线、掩体、地标、战利品可读性,以及针对相机高度(FPS 与 TPS)的比例问题。
主要能力
技能提供一套“配方”(Recipe),覆盖以下环节:
- 视线驱动的关卡布局:掩体高度分为 1.0–1.2 m(蹲伏)与 1.8 m(站立),通道宽度 4–8 m,FPS 眼高 1.6 m,所有掩体需带碰撞。
- 先用 blockout.py 做掩体粗模:腰高箱体(1.0–1.2 m,胸高 1.4 m)排成环形或线形,间距 3 m 以上,使用 face_center 让长边朝向战斗方向。
- 用 make_collision.py 为掩体生成碰撞(shape box,engine unreal)。
- 用 bevel_stack.py 对掩体边缘倒角(width 0.01,segments 1),使边缘能捕捉光线。
- 用 scatter_props.py 散布低矮掩体道具(count 10,kinds [box, barrel, pallet])。
- 用 light_rig.py 以 overcast 预设打光,获得公平、可读的可见度。
- 用 camera_rig.py 设置眼平相机:lens_mm 24,eye_height 1.6(FPS 眼高),max_distance 3.0,使相机保持在 4 m 掩体环内。随后检查 cam.occluded_by:若非空,则移动相机,不要交付。
使用方式
技能以 Python 代码片段形式给出,通过 runpy 依次调用各脚本,示例代码(保留原样):
import runpy
skills = "<skills_dir>" # parent folder of this skill (the plugin's skills/ directory)
target = "SM_Asset" # object to style / dress
r = {}
r["cover"] = runpy.run_path(f"{skills}/environment-artist/scripts/blockout.py", init_globals={"ARGS": {"group": "Cover", "pieces": [{"kind": "box", "size": [1.8, 0.6, 1.1], "name": "COVER"}], "layout": {"pattern": "ring", "count": 6, "radius": 4.0, "center": target, "face_center": True}, "bevel": 0.02}})["result"]
r["bevel"] = runpy.run_path(f"{skills}/hard-surface/scripts/bevel_stack.py", init_globals={"ARGS": {"objects": [target], "width": 0.01, "segments": 1}})["result"]
r["col"] = runpy.run_path(f"{skills}/collision-proxy/scripts/make_collision.py", init_globals={"ARGS": {"objects": [target], "shape": "box", "engine": "unreal"}})["result"]
r["props"] = runpy.run_path(f"{skills}/set-dressing/scripts/scatter_props.py", init_globals={"ARGS": {"target": target, "count": 10, "kinds": ["box", "barrel", "pallet"]}})["result"]
r["light"] = runpy.run_path(f"{skills}/lighting/scripts/light_rig.py", init_globals={"ARGS": {"preset": "overcast", "target": target}})["result"]
r["cam"] = runpy.run_path(f"{skills}/camera-cinematography/scripts/camera_rig.py", init_globals={"ARGS": {"name": "CAM_FPS", "target": target, "lens_mm": 24, "eye_height": 1.6, "max_distance": 3.0}})["result"]
if r["cam"]["occluded_by"]:
raise RuntimeError(f"camera blocked by {r['cam']['occluded_by']}")
result = r
参考数值
| 项目 | 数值 |
|---|---|
| FPS 眼高 | 1.6 m(蹲伏 1.0 m) |
| 低掩体 | 1.0–1.2 m |
| 高掩体 | 1.8–2.2 m |
| 通道宽度 | 4–8 m |
| 门洞 | 1.1 x 2.2 m |
| 走廊 | 2.5–3 m |
适用场景
适用于 FPS/TPS 竞技场、掩体布局、视线设计,或第一人称相机检查。
限制
资料未提供该技能的收费、价格、平台支持范围、效果保证或额外使用步骤,相关内容暂未提供。