一.引擎固化骨架
Data\skeleton_bodies.xml:定义系统骨架skel_human,skel_horse.
<Skeletons><Skeleton name="skel_human"><Skeleton name="skel_horse">
</Skeletons>
CommonRes\skeletons.brf 为skel_human的资源文件,适用BRF打开
CommonRes\horse_skeleton.brf 为skel_horse的资源文件,适用BRF打开
二.自定义骨架
通过在module_skins.py添加新的皮肤绑定新的骨架.
# Each skin record contains the following fields:
# 1) Skin id: used for referencing skins.
# 2) Skin flags. Not used yet. Should be 0.
# 3) Body mesh.
# 4) Calf mesh (left one).
# 5) Hand mesh (left one).
# 6) Head mesh.
# 7) Face keys (list)
# 8) List of hair meshes.
# 9) List of beard meshes.
# 10) List of hair textures.
# 11) List of beard textures.
# 12) List of face textures.
# 13) List of voices.
# 14) Skeleton name 定义资源名称
# 15) Scale (doesn't fully work yet)
# 16) Blood particles 1 (do not add this if you wish to use the default particles)
# 17) Blood particles 2 (do not add this if you wish to use the default particles)
# 17) Face key constraints (do not add this if you do not wish to use it)
三.骨骼动画
骑砍中的四向攻击,骑马等动作都是采用骨骼动画制作,通过module_animations.py配置不同的动画,部分动画固化至引擎中,如四向攻击,骑马,跳跃等.骑砍中固化的骨骼动画有:
act_unused_horse_anim_100 act_unused_horse_anim_99 act_unused_horse_anim_98 act_unused_horse_anim_97 act_unused_horse_anim_96 act_unused_horse_anim_95 act_unused_horse_anim_94 act_unused_horse_anim_93 act_unused_horse_anim_92 act_unused_horse_anim_91 act_unused_horse_anim_90 act_unused_horse_anim_89 act_unused_horse_anim_88 act_unused_horse_anim_87 act_unused_horse_anim_86 act_unused_horse_anim_85 act_unused_horse_anim_84 act_unused_horse_anim_83 act_unused_horse_anim_82 act_unused_horse_anim_81 act_unused_horse_anim_80 act_unused_horse_anim_79 act_unused_horse_anim_78 act_unused_horse_anim_77 act_unused_horse_anim_76 act_unused_horse_anim_75 act_unused_horse_anim_74 act_unused_horse_anim_73 act_unused_horse_anim_72 act_unused_horse_anim_71 act_unused_horse_anim_70 act_unused_horse_anim_69 act_unused_horse_anim_68 act_unused_horse_anim_67 act_unused_horse_anim_66 act_unused_horse_anim_65 act_unused_horse_anim_64 act_unused_horse_anim_63 act_unused_horse_anim_62 act_unused_horse_anim_61 act_unused_horse_anim_60 act_unused_horse_anim_59 act_unused_horse_anim_58 act_unused_horse_anim_57 act_unused_horse_anim_56 act_unused_horse_anim_55 act_unused_horse_anim_54 act_unused_horse_anim_53 act_unused_horse_anim_52 act_unused_horse_anim_51 act_unused_horse_anim_50 act_unused_horse_anim_49 act_unused_horse_anim_48 act_unused_horse_anim_47 act_unused_horse_anim_46 act_unused_horse_anim_45 act_unused_horse_anim_44 act_unused_horse_anim_43 act_unused_horse_anim_42 act_unused_horse_anim_41 act_unused_horse_anim_40 act_unused_horse_anim_39 act_unused_horse_anim_38 act_unused_horse_anim_37 act_unused_horse_anim_36 act_unused_horse_anim_35 act_unused_horse_anim_34 act_unused_horse_anim_33 act_unused_horse_anim_32 act_unused_horse_anim_31 act_unused_horse_anim_30 act_unused_horse_anim_29 act_unused_horse_anim_28 act_unused_horse_anim_27 act_unused_horse_anim_26 act_unused_horse_anim_25 act_unused_horse_anim_24 act_unused_horse_anim_23 act_unused_horse_anim_22 act_unused_horse_anim_21 act_unused_horse_anim_20 act_unused_horse_anim_19 act_unused_horse_anim_18 act_unused_horse_anim_17 act_unused_horse_anim_16 act_unused_horse_anim_15 act_unused_horse_anim_14 act_unused_horse_anim_13 act_unused_horse_anim_12 act_unused_horse_anim_11 act_unused_horse_anim_10 act_unused_horse_anim_9 act_unused_horse_anim_8 act_unused_horse_anim_7 act_unused_horse_anim_6 act_unused_horse_anim_5 act_unused_horse_anim_4 act_unused_horse_anim_3 act_unused_horse_anim_2 act_unused_horse_anim_1 act_horse_fall_roll act_horse_fall_right act_horse_fall_in_place act_horse_slow act_horse_turn_left_head act_horse_turn_right_head act_horse_turn_left act_horse_turn_right act_horse_jump_end act_horse_jump act_horse_rear act_horse_walk_backward act_horse_pace_4 act_horse_pace_3 act_horse_pace_2 act_horse_pace_1 act_horse_stand act_unused_human_anim_100 act_unused_human_anim_99 act_unused_human_anim_98 act_unused_human_anim_97 act_unused_human_anim_96 act_unused_human_anim_95 act_unused_human_anim_94 act_unused_human_anim_93 act_unused_human_anim_92 act_unused_human_anim_91 act_unused_human_anim_90 act_unused_human_anim_89 act_unused_human_anim_88 act_unused_human_anim_87 act_unused_human_anim_86 act_unused_human_anim_85 act_unused_human_anim_84 act_unused_human_anim_83 act_unused_human_anim_82 act_unused_human_anim_81 act_unused_human_anim_80 act_unused_human_anim_79 act_unused_human_anim_78 act_unused_human_anim_77 act_unused_human_anim_76 act_unused_human_anim_75 act_unused_human_anim_74 act_unused_human_anim_73 act_unused_human_anim_72 act_unused_human_anim_71 act_unused_human_anim_70 act_unused_human_anim_69 act_unused_human_anim_68 act_unused_human_anim_67 act_unused_human_anim_66 act_unused_human_anim_65 act_unused_human_anim_64 act_unused_human_anim_63 act_unused_human_anim_62 act_unused_human_anim_61 act_unused_human_anim_60 act_unused_human_anim_59 act_unused_human_anim_58 act_unused_human_anim_57 act_unused_human_anim_56 act_unused_human_anim_55 act_unused_human_anim_54 act_unused_human_anim_53 act_unused_human_anim_52 act_unused_human_anim_51 act_unused_human_anim_50 act_unused_human_anim_49 act_unused_human_anim_48 act_unused_human_anim_47 act_unused_human_anim_46 act_unused_human_anim_45 act_unused_human_anim_44 act_unused_human_anim_43 act_unused_human_anim_42 act_unused_human_anim_41 act_unused_human_anim_40 act_unused_human_anim_39 act_unused_human_anim_38 act_unused_human_anim_37 act_unused_human_anim_36 act_unused_human_anim_35 act_unused_human_anim_34 act_unused_human_anim_33 act_unused_human_anim_32 act_unused_human_anim_31 act_unused_human_anim_30 act_unused_human_anim_29 act_unused_human_anim_28 act_unused_human_anim_27 act_unused_human_anim_26 act_unused_human_anim_25 act_unused_human_anim_24 act_unused_human_anim_23 act_unused_human_anim_22 act_unused_human_anim_21 act_unused_human_anim_20 act_unused_human_anim_19 act_unused_human_anim_18 act_unused_human_anim_17 act_unused_human_anim_16 act_unused_human_anim_15 act_unused_human_anim_14 act_unused_human_anim_13 act_unused_human_anim_12 act_unused_human_anim_11 act_unused_human_anim_10 act_unused_human_anim_9 act_unused_human_anim_8 act_unused_human_anim_7 act_unused_human_anim_6 act_unused_human_anim_5 act_unused_human_anim_4 act_unused_human_anim_3 act_unused_human_anim_2 act_unused_human_anim_1 act_pose_5 act_pose_4 act_pose_3 act_pose_2 act_pose_1 act_dance act_stand_lord act_stand_lady act_stand_townguard act_cheer_stand act_cheer act_strike_fall_back_rise_upper act_strike_fall_back_rise act_strike_chest_front_stop act_rider_fall_roll act_rider_fall_right act_fall_rider_left act_fall_rider_right act_fall_rider_right_forward act_fall_body_back act_fall_right_front act_fall_head_front act_fall_abdomen_hold_front act_fall_chest_front act_fall_face_hold act_strike_head_front_left_reloc act_strike3_abdomen_back act_strike3_abdomen_front act_strike3_abdomen_right act_strike3_abdomen_left act_strike3_chest_front act_strike3_chest_right act_strike3_chest_left act_strike3_head_back act_strike3_head_front act_strike3_head_right act_strike3_head_left act_strike2_legs_back act_strike2_legs_front act_strike2_legs_right act_strike2_legs_left act_strike2_abdomen_back act_strike2_abdomen_front act_strike2_abdomen_right act_strike2_abdomen_left act_strike2_chest_back act_strike2_chest_front act_strike2_chest_right act_strike2_chest_left act_strike2_head_back act_strike2_head_front act_strike2_head_right act_strike2_head_left act_strike_legs_back act_strike_legs_front act_strike_legs_right act_strike_legs_left act_strike_abdomen_back act_strike_abdomen_front act_strike_abdomen_right act_strike_abdomen_left act_strike_chest_back act_strike_chest_front act_strike_chest_right act_strike_chest_left act_strike_head_back act_strike_head_front act_strike_head_right act_strike_head_left act_defend_left_staff_parry_3 act_defend_left_staff_parry_2 act_defend_left_staff_parry_1 act_defend_left_staff_keep act_defend_left_staff act_defend_right_staff_parry_3 act_defend_right_staff_parry_2 act_defend_right_staff_parry_1 act_defend_right_staff_keep act_defend_right_staff act_defend_up_staff_parry_3 act_defend_up_staff_parry_2 act_defend_up_staff_parry_1 act_defend_up_staff_keep act_defend_up_staff act_defend_forward_staff_parry_3 act_defend_forward_staff_parry_2 act_defend_forward_staff_parry_1 act_defend_forward_staff_keep act_defend_forward_staff act_defend_left_onehanded_parry_3 act_defend_left_onehanded_parry_2 act_defend_left_onehanded_parry_1 act_defend_left_onehanded_keep act_defend_left_onehanded act_defend_right_onehanded_parry_3 act_defend_right_onehanded_parry_2 act_defend_right_onehanded_parry_1 act_defend_right_onehanded_keep act_defend_right_onehanded act_defend_up_onehanded_parry_3 act_defend_up_onehanded_parry_2 act_defend_up_onehanded_parry_1 act_defend_up_onehanded_keep act_defend_up_onehanded act_defend_forward_onehanded_parry_3 act_defend_forward_onehanded_parry_2 act_defend_forward_onehanded_parry_1 act_defend_forward_onehanded_keep act_defend_forward_onehanded act_defend_left_twohanded_parry_3 act_defend_left_twohanded_parry_2 act_defend_left_twohanded_parry_1 act_defend_left_twohanded_keep act_defend_left_twohanded act_defend_right_twohanded_parry_3 act_defend_right_twohanded_parry_2 act_defend_right_twohanded_parry_1 act_defend_right_twohanded_keep act_defend_right_twohanded act_defend_up_twohanded_parry_3 act_defend_up_twohanded_parry_2 act_defend_up_twohanded_parry_1 act_defend_up_twohanded_keep act_defend_up_twohanded act_defend_forward_greatsword_parry_3 act_defend_forward_greatsword_parry_2 act_defend_forward_greatsword_parry_1 act_defend_forward_greatsword_keep act_defend_forward_greatsword act_defend_shield_parry_3 act_defend_shield_parry_2 act_defend_shield_parry_1 act_defend_shield_keep act_defend_shield act_defend_shield_left act_defend_shield_right act_defend_shield_up act_defend_shield_forward act_defend_fist_parry_3 act_defend_fist_parry_2 act_defend_fist_parry_1 act_defend_fist_keep act_defend_fist act_parried_slashright_staff act_blocked_slashright_staff act_release_slashright_staff_continue act_release_slashright_staff act_ready_slashright_staff act_parried_slashleft_staff act_blocked_slashleft_staff act_release_slashleft_staff_continue act_release_slashleft_staff act_ready_slashleft_staff act_parried_thrust_staff act_blocked_thrust_staff act_release_thrust_staff_continue act_release_thrust_staff act_ready_thrust_staff act_parried_overswing_staff act_blocked_overswing_staff act_release_overswing_staff_continue act_release_overswing_staff act_ready_overswing_staff act_parried_slash_horseback_polearm_left act_blocked_slash_horseback_polearm_left act_release_slash_horseback_polearm_left_continue act_release_slash_horseback_polearm_left act_ready_slash_horseback_polearm_left act_parried_slash_horseback_polearm_right act_blocked_slash_horseback_polearm_right act_release_slash_horseback_polearm_right_continue act_release_slash_horseback_polearm_right act_ready_slash_horseback_polearm_right act_parried_slash_horseback_left act_blocked_slash_horseback_left act_release_slash_horseback_left_continue act_release_slash_horseback_left act_ready_slash_horseback_left act_parried_slash_horseback_right act_blocked_slash_horseback_right act_release_slash_horseback_right_continue act_release_slash_horseback_right act_ready_slash_horseback_right act_parried_overswing_onehanded act_blocked_overswing_onehanded act_release_overswing_onehanded_continue act_release_overswing_onehanded act_ready_overswing_onehanded act_parried_slashleft_onehanded act_blocked_slashleft_onehanded act_release_slashleft_onehanded_continue act_release_slashleft_onehanded act_ready_slashleft_onehanded act_parried_slashright_onehanded act_blocked_slashright_onehanded act_release_slashright_onehanded_continue act_release_slashright_onehanded act_ready_slashright_onehanded act_parried_thrust_onehanded_lance act_blocked_thrust_onehanded_lance act_release_thrust_onehanded_lance_continue act_release_thrust_onehanded_lance act_ready_thrust_onehanded_lance act_parried_thrust_onehanded_horseback act_blocked_thrust_onehanded_horseback act_release_thrust_onehanded_horseback_continue act_release_thrust_onehanded_horseback act_ready_thrust_onehanded_horseback act_parried_thrust_onehanded act_blocked_thrust_onehanded act_release_thrust_onehanded_continue act_release_thrust_onehanded act_ready_thrust_onehanded act_parried_overswing_twohanded act_blocked_overswing_twohanded act_release_overswing_twohanded_continue act_release_overswing_twohanded act_ready_overswing_twohanded act_parried_thrust_twohanded act_blocked_thrust_twohanded act_release_thrust_twohanded_continue act_release_thrust_twohanded act_ready_thrust_twohanded act_parried_slashleft_twohanded act_blocked_slashleft_twohanded act_release_slashleft_twohanded_continue act_release_slashleft_twohanded act_ready_slashleft_twohanded act_parried_slashright_twohanded act_blocked_slashright_twohanded act_release_slashright_twohanded_continue act_release_slashright_twohanded act_ready_slashright_twohanded act_parried_uppercut_fist act_blocked_uppercut_fist act_release_uppercut_fist_continue act_release_uppercut_fist act_ready_uppercut_fist act_parried_direct_fist act_blocked_direct_fist act_release_direct_fist_continue act_release_direct_fist act_ready_direct_fist act_parried_swingleft_fist act_blocked_swingleft_fist act_release_swingleft_fist_continue act_release_swingleft_fist act_ready_swingleft_fist act_parried_swingright_fist act_blocked_swingright_fist act_release_swingright_fist_continue act_release_swingright_fist act_ready_swingright_fist act_reload_musket act_release_musket act_ready_musket act_reload_pistol act_release_pistol act_ready_pistol act_release_stone act_ready_stone act_release_throwing_axe act_ready_throwing_axe act_release_throwing_knife act_ready_throwing_knife act_release_javelin act_ready_javelin act_reload_crossbow_horseback act_reload_crossbow act_release_crossbow act_ready_crossbow act_release_bow_mounted act_ready_bow_mounted act_release_bow act_ready_bow act_cancel_attack_polearm act_cancel_attack_twohanded act_cancel_attack_onehanded act_unequip_bow_left_hip act_equip_bow_left_hip act_unequip_bow_back act_equip_bow_back act_unequip_shield act_equip_shield act_unequip_wakizashi act_equip_wakizashi act_unequip_katana act_equip_katana act_unequip_pistol_front_left act_equip_pistol_front_left act_unequip_revolver_right act_equip_revolver_right act_unequip_axe_back act_equip_axe_back act_unequip_dagger_front_right act_equip_dagger_front_right act_unequip_dagger_front_left act_equip_dagger_front_left act_unequip_spear act_equip_spear act_unequip_crossbow act_equip_crossbow act_unequip_axe_left_hip act_equip_axe_left_hip act_unequip_greatsword act_equip_greatsword act_unequip_sword act_equip_sword act_unequip_default act_equip_default act_lancer_ride_0 act_dismount_horse act_mount_horse act_ride_turn_left act_ride_turn_right act_ride_jump_end act_ride_jump act_ride_spur act_ride_rear act_lancer_ride_4_no_shield act_lancer_ride_4 act_ride_4 act_ride_3 act_ride_2 act_lancer_charge_parried act_lancer_ride_1 act_ride_1 act_ride_0 act_crouch_to_stand act_stand_to_crouch act_walk_forward_crouch act_walk_backward_right_hips_left act_walk_backward_right_hips_right act_walk_backward_right_polearm act_walk_backward_right_twohanded act_walk_backward_right_onehanded act_walk_backward_right act_walk_backward_left_hips_left act_walk_backward_left_hips_right act_walk_backward_left_polearm act_walk_backward_left_twohanded act_walk_backward_left_onehanded act_walk_backward_left act_walk_forward_left_hips_left act_walk_forward_left_hips_right act_walk_forward_left_polearm act_walk_forward_left_twohanded act_walk_forward_left_onehanded act_walk_forward_left act_walk_forward_right_hips_left act_walk_forward_right_hips_right act_walk_forward_right_polearm act_walk_forward_right_twohanded act_walk_forward_right_onehanded act_walk_forward_right act_walk_left_hips_left act_walk_left_hips_right act_walk_left_polearm act_walk_left_twohanded act_walk_left_onehanded act_walk_left act_walk_right_hips_left act_walk_right_hips_right act_walk_right_polearm act_walk_right_twohanded act_walk_right_onehanded act_walk_right act_walk_backward_hips_left act_walk_backward_hips_right act_walk_backward_greatsword act_walk_backward_staff act_walk_backward_onehanded act_walk_backward act_walk_forward_hips_left act_walk_forward_hips_right act_walk_forward_greatsword act_walk_forward_staff act_walk_forward_onehanded act_walk_forward act_run_left_hips_left act_run_left_hips_right act_run_left_polearm act_run_left_twohanded act_run_left_onehanded act_run_left act_run_right_hips_left act_run_right_hips_right act_run_right_polearm act_run_right_twohanded act_run_right_onehanded act_run_right act_run_backward_left_hips_left act_run_backward_left_hips_right act_run_backward_left_greatsword act_run_backward_left_staff act_run_backward_left_onehanded act_run_backward_left act_run_backward_right_hips_left act_run_backward_right_hips_right act_run_backward_right_greatsword act_run_backward_right_staff act_run_backward_right_onehanded act_run_backward_right act_run_backward_hips_left act_run_backward_hips_right act_run_backward_greatsword act_run_backward_staff act_run_backward_onehanded act_run_backward act_run_forward_left_hips_left act_run_forward_left_hips_right act_run_forward_left_greatsword act_run_forward_left_staff act_run_forward_left_onehanded act_run_forward_left act_run_forward_right_hips_left act_run_forward_right_hips_right act_run_forward_right_greatsword act_run_forward_right_staff act_run_forward_right_onehanded act_run_forward_right act_run_forward_hips_left act_run_forward_hips_right act_run_forward_greatsword act_run_forward_staff act_run_forward_onehanded act_run_forward act_kick_left_leg act_kick_right_leg act_prepare_kick_3 act_prepare_kick_2 act_prepare_kick_1 act_prepare_kick_0 act_turn_left_greatsword act_turn_right_greatsword act_turn_left_staff act_turn_right_staff act_turn_left_single act_turn_right_single act_turn_left act_turn_right act_stand_crossbow act_stand_staff act_stand_greatsword act_stand_single act_stand_unarmed act_jump_end_hard act_jump_end act_jump_loop act_jump act_stand_player_first_person act_stand_man act_stand
module_animations.py动画类型常量:
arf_two_handed_blade = 0x01000000
arf_lancer = 0x02000000
arf_stick_item_to_left_hand = 0x04000000
arf_cyclic = 0x10000000arf_use_walk_progress = 0x20000000
arf_use_stand_progress = 0x40000000
arf_use_inv_walk_progress = 0x80000000##arf_walk = arf_phase_even | arf_cyclic#-----------------------------------------amf_priority_mask = 0x00000fffamf_rider_rot_bow = 0x00001000
amf_rider_rot_throw = 0x00002000
amf_rider_rot_crossbow = 0x00003000
amf_rider_rot_pistol = 0x00004000
amf_rider_rot_overswing = 0x00005000
amf_rider_rot_thrust = 0x00006000
amf_rider_rot_swing_right = 0x00007000
amf_rider_rot_swing_left = 0x00008000
amf_rider_rot_couched_lance = 0x00009000
amf_rider_rot_shield = 0x0000a000
amf_rider_rot_defend = 0x0000b000amf_start_instantly = 0x00010000
amf_use_cycle_period = 0x00100000
amf_use_weapon_speed = 0x00200000
amf_use_defend_speed = 0x00400000
amf_accurate_body = 0x00800000
amf_client_prediction = 0x01000000
amf_play = 0x02000000 #通过脚本调用播放
amf_keep = 0x04000000
amf_restart = 0x08000000 # restart animation even if it is the current animation
amf_hide_weapon = 0x10000000
amf_client_owner_prediction = 0x20000000
amf_use_inertia = 0x40000000
amf_continue_to_next = 0x80000000#-----------------------------------------acf_synch_with_horse = 0x00000001
acf_align_with_ground = 0x00000002
acf_enforce_lowerbody = 0x00000100
acf_enforce_rightside = 0x00000200
acf_enforce_all = 0x00000400
acf_parallels_for_look_slope = 0x00001000
acf_lock_camera = 0x00002000 #锁定摄像机
acf_displace_position = 0x00004000
acf_ignore_slope = 0x00008000
acf_thrust = 0x00010000
acf_right_cut = 0x00020000
acf_left_cut = 0x00040000
acf_overswing = 0x00080000
acf_rot_vertical_mask = 0x00300000
acf_rot_vertical_bow = 0x00100000
acf_rot_vertical_sword = 0x00200000
acf_anim_length_mask = 0xff000000
四.添加自己制作的动画并播放
["god_horse_man_sit_down", acf_enforce_lowerbody, amf_priority_die|amf_play|amf_client_prediction|amf_use_cycle_period,[10, "anim_human_02", 50, 69, arf_cyclic], ],acf_enforce_lowerbody 引擎控制骨骼动画执行时下半身骨骼不受影响amf_play 可以通过脚本调用该动画arf_cyclic 动画是循环播放的
五.blender中编辑自己的动画
<1.Blender下载SMD插件
Blender导出SMD文件格式_blender怎么打开smd-CSDN博客文章浏览阅读221次。SMD文件:为描述场景的格式文件 = light(光照) + Camera(视角) + 静态数据 + + animation(顶点动画/骨骼动画)。顶点1:父骨骼ID + 顶点坐标 + 法向向量 + UV + 连接骨骼数 + 骨骼ID + 权重。顶点2:父骨骼ID + 顶点坐标 + 法向向量 + UV + 连接骨骼数 + 骨骼ID + 权重。顶点3:父骨骼ID + 顶点坐标 + 法向向量 + UV + 连接骨骼数 + 骨骼ID + 权重。<2.nodes:骨骼信息,骨骼ID + 骨骼名称 + 父骨骼ID。_blender怎么打开smdhttps://blog.csdn.net/qq_35829452/article/details/133995304 <2.OpenBrf导出SMD骨骼动画
<3.Blender导入SMD文件进行骨骼动画编辑
Blender立方体骨骼动画创建_哔哩哔哩_bilibili1.为模型创建顶点组2.创建骨架,新增骨骼3.创建模型修改器,顶点组和骨骼关联4.姿态模式下创建动画,插入关键帧, 视频播放量 114、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 1、转发人数 0, 视频作者 霸王奉先, 作者简介 csdn:blog.csdn.net/qq_35829452project:gitcode.net/users/qq_35829452,相关视频:Blender对称镜像操作,Blender正反面法向向量修改,骑砍1战团mod开发-OpenBrf使用方法,骑砍1战团mod开发环境搭建,骑砍1战团mod开发-蛮王语音,骑砍1战团mod开发-导入语音包,骑砍1战团mod开发-顶点动画制作方法,骑砍1战团mod开发-大地图制作方法,机 械 骨 骼 哪 家 强 ?,【3D建模】28岁建模师劝诫大家,建模没必要的苦不要吃,因为...https://www.bilibili.com/video/BV12w411T7i2