public void setTarget(Posture posture, ulong mask = (ulong)PartsBit.Whole) { // pass 1 foreach (var node_data in posture.getNodeDataList()) { var node_idx = node_data.node_idx_; if (node_idx != (int)Parts.Root && (1UL << node_idx & mask) != 0) { var node = node_list_[node_idx]; node.setBaseRotation(node_data); } } // pass 2 foreach (var node_data in posture.getNodeDataList()) { var node_idx = node_data.node_idx_; if (node_idx != (int)Parts.Root && (1UL << node_idx & mask) != 0) { var node = node_list_[node_idx]; node.setTarget(node_data); } } }
IEnumerator Start() { yield return(FileUtil.preparePath("apose.dat")); posture_apose_ = JsonUtility.FromJson <Posture>(FileUtil.content); yield return(FileUtil.preparePath("pre_throw_l_arm.dat")); posture_pre_throw_l_arm_ = JsonUtility.FromJson <Posture>(FileUtil.content); yield return(FileUtil.preparePath("pre_throw_r_arm.dat")); posture_pre_throw_r_arm_ = JsonUtility.FromJson <Posture>(FileUtil.content); yield return(FileUtil.preparePath("throw_l_arm.dat")); posture_throw_l_arm_ = JsonUtility.FromJson <Posture>(FileUtil.content); yield return(FileUtil.preparePath("throw_r_arm.dat")); posture_throw_r_arm_ = JsonUtility.FromJson <Posture>(FileUtil.content); yield return(FileUtil.preparePath("pre_jump.dat")); posture_pre_jump_ = JsonUtility.FromJson <Posture>(FileUtil.content); muscle_motion_ = new MuscleMotion(); muscle_motion_.init(posture_apose_, 80f /* damper */, 1500f /* spring */); set_params_body(body_damper_, body_spring_); set_params_arm(arm_damper_, arm_spring_); set_params_leg(leg_damper_, leg_spring_); { /* tales */ float damper = 4f; float spring_ratio = 40f; muscle_motion_.setParams(MuscleMotion.Parts.L_Tale1, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_Tale2, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_Tale3, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_Tale4, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Tale1, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Tale2, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Tale3, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Tale4, damper, spring_ratio); } { /* ribbons */ float damper = 2f; float spring_ratio = 100f; muscle_motion_.setParams(MuscleMotion.Parts.L_Ribbon1, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_Ribbon2, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Ribbon1, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Ribbon2, damper, spring_ratio); } { /* suso */ float damper = 10f; float spring_ratio = 200f; muscle_motion_.setParams(MuscleMotion.Parts.L_SusoBack, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_SusoFront, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_SusoBack, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_SusoFront, damper, spring_ratio); } current_posture_ = posture_apose_; }
public Posture deepCopy() { var posture = new Posture(); posture.node_data_list_ = new NodeData[node_data_list_.Length]; for (var i = 0; i < node_data_list_.Length; ++i) { posture.node_data_list_[i] = node_data_list_[i].deepCopy(); } return(posture); }
IEnumerator Start() { draw_buffer_.init(); yield return(FileUtil.preparePath("whole.dat")); posture_ = JsonUtility.FromJson <Posture>(FileUtil.content); muscle_motion_ = new MuscleMotion(); muscle_motion_.init(posture_, 40f /* damper */, 800f /* spring_ratio */); GetComponent <MuscleMotionRenderer>().init(); initialized_ = true; }
public void init(Posture posture, float damper, float spring_ratio) { node_list_ = new Node[(int)Parts.Max]; for (var i = 0; i < (int)Parts.Max; ++i) { node_list_[i] = new Node(); } foreach (var node_data in posture.getNodeDataList()) { // node_data.dump(); var node_idx = node_data.node_idx_; var node = node_list_[node_idx]; var parent_node_idx = node_data.parent_node_idx_; var parent_node = parent_node_idx < (int)Parts.Max ? node_list_[parent_node_idx] : null; node.init(node_data, parent_node, damper, spring_ratio); } }
private void write_data(string filename, List <MuscleMotionEditor.TransformNode> transform_node_list, ulong mask) { var root = (target as MuscleMotionEditor).transform; root.position = Vector3.zero; var posture = new Posture(); var serialize = posture.beginSet(); foreach (var transform_node in transform_node_list) { posture.set(serialize, transform_node.transform_, transform_node.parts_, transform_node.parent_parts_, mask); } posture.endSet(serialize); string json = JsonUtility.ToJson(posture); var path = Application.streamingAssetsPath + "/" + filename + ".dat"; System.IO.File.WriteAllText(path, json); Debug.LogFormat("write {0} done.", path); }
void OnGUI() { int x = 20; int y = 60; int w = 240; int h = 40; GUI.Box(new Rect(Screen.width - (x + w + 10), y - 40, w, y + h * 10 + 10), "Posture Param"); GUI.Label(new Rect(Screen.width - (x + w), y, w - 20, h), "body damper"); y += h / 2; float body_damper = GUI.HorizontalSlider(new Rect(Screen.width - (x + w), y, w - 20, h), body_damper_, 0f, 100f); if (body_damper_ != body_damper) { body_damper_ = body_damper; } y += h; GUI.Label(new Rect(Screen.width - (x + w), y, w - 20, h), "body spring"); y += h / 2; float body_spring = GUI.HorizontalSlider(new Rect(Screen.width - (x + w), y, w - 20, h), body_spring_, 0f, 2000f); if (body_spring_ != body_spring) { body_spring_ = body_spring; } y += h; GUI.Label(new Rect(Screen.width - (x + w), y, w - 20, h), "arm damper"); y += h / 2; float arm_damper = GUI.HorizontalSlider(new Rect(Screen.width - (x + w), y, w - 20, h), arm_damper_, 0f, 100f); if (arm_damper_ != arm_damper) { arm_damper_ = arm_damper; } y += h; GUI.Label(new Rect(Screen.width - (x + w), y, w - 20, h), "arm spring"); y += h / 2; float arm_spring = GUI.HorizontalSlider(new Rect(Screen.width - (x + w), y, w - 20, h), arm_spring_, 0f, 2000f); if (arm_spring_ != arm_spring) { arm_spring_ = arm_spring; } y += h; GUI.Label(new Rect(Screen.width - (x + w), y, w - 20, h), "leg damper"); y += h / 2; float leg_damper = GUI.HorizontalSlider(new Rect(Screen.width - (x + w), y, w - 20, h), leg_damper_, 0f, 100f); if (leg_damper_ != leg_damper) { leg_damper_ = leg_damper; } y += h; GUI.Label(new Rect(Screen.width - (x + w), y, w - 20, h), "leg spring"); y += h / 2; float leg_spring = GUI.HorizontalSlider(new Rect(Screen.width - (x + w), y, w - 20, h), leg_spring_, 0f, 2000f); if (leg_spring_ != leg_spring) { leg_spring_ = leg_spring; } y += h; x = 20; y = 40; w = 180; h = 30; GUI.Box(new Rect(x - 10, y - 20, x + w, y + h * 10 + 10), "Posture Menu"); if (GUI.Button(new Rect(x, y, w, h), "apose") || Input.GetKeyDown(KeyCode.Alpha0)) { current_posture_ = posture_apose_; } y += h; if (GUI.Button(new Rect(x, y, w, h), "pre_throw_l_arm") || Input.GetKeyDown(KeyCode.Alpha1)) { current_posture_ = posture_pre_throw_l_arm_; } y += h; if (GUI.Button(new Rect(x, y, w, h), "throw_l_arm") || Input.GetKeyDown(KeyCode.Alpha2)) { current_posture_ = posture_throw_l_arm_; } y += h; if (GUI.Button(new Rect(x, y, w, h), "pre_throw_r_arm") || Input.GetKeyDown(KeyCode.Alpha3)) { current_posture_ = posture_pre_throw_r_arm_; } y += h; if (GUI.Button(new Rect(x, y, w, h), "throw_r_arm") || Input.GetKeyDown(KeyCode.Alpha4)) { current_posture_ = posture_throw_r_arm_; } y += h; if (GUI.Button(new Rect(x, y, w, h), "pre_jump") || Input.GetKeyDown(KeyCode.Alpha5)) { current_posture_ = posture_pre_jump_; } y += h; if (GUI.Button(new Rect(x, y, w, h), "hit") || Input.GetKeyDown(KeyCode.Alpha6)) { var torque0 = MyRandom.onSphere(1f) * 2000f; muscle_motion_.getNode(MuscleMotion.Parts.Ribs).rigidbody_.addTorque(ref torque0); var torque1 = MyRandom.onSphere(1f) * 2000f; muscle_motion_.getNode(MuscleMotion.Parts.Ribs2).rigidbody_.addTorque(ref torque1); var torque2 = MyRandom.onSphere(1f) * 2000f; muscle_motion_.getNode(MuscleMotion.Parts.Ribs3).rigidbody_.addTorque(ref torque2); } y += h; y += 8; gui_lookat_ = GUI.HorizontalSlider(new Rect(x, y, w, h), gui_lookat_, 0f, 1f); y += 10; GUI.Label(new Rect(x, y, w, h), "value:" + gui_lookat_); y += h; gui_hand_ = GUI.Toggle(new Rect(x, y, w, h), gui_hand_, "hand"); y += h; gui_rotate_ = GUI.Toggle(new Rect(x, y, w, h), gui_rotate_, "rotate"); y += h; }
public IEnumerator initialize() { base.init(); yield return(FileUtil.preparePath("apose.dat")); posture_apose_ = JsonUtility.FromJson <Posture>(FileUtil.content); Debug.Assert(posture_apose_ != null); yield return(FileUtil.preparePath("pre_throw_l_arm.dat")); posture_pre_throw_l_arm_ = JsonUtility.FromJson <Posture>(FileUtil.content); Debug.Assert(posture_pre_throw_l_arm_ != null); yield return(FileUtil.preparePath("pre_throw_r_arm.dat")); posture_pre_throw_r_arm_ = JsonUtility.FromJson <Posture>(FileUtil.content); Debug.Assert(posture_pre_throw_r_arm_ != null); yield return(FileUtil.preparePath("throw_l_arm.dat")); posture_throw_l_arm_ = JsonUtility.FromJson <Posture>(FileUtil.content); Debug.Assert(posture_throw_l_arm_ != null); yield return(FileUtil.preparePath("throw_r_arm.dat")); posture_throw_r_arm_ = JsonUtility.FromJson <Posture>(FileUtil.content); Debug.Assert(posture_throw_r_arm_ != null); yield return(FileUtil.preparePath("pre_jump.dat")); posture_pre_jump_ = JsonUtility.FromJson <Posture>(FileUtil.content); Debug.Assert(posture_throw_r_arm_ != null); throwing_cnt_l_ = 0; throwing_cnt_r_ = 0; jump_tame_duration_ = 0f; jump_propel_remain_ = 0f; on_ground_ = true; on_ground_time_ = 100f; bullet_tame_left_ = 0f; bullet_tame_right_ = 0f; // hit_time_ = 0f; somersault_ = false; muscle_motion_ = new MuscleMotion(); muscle_motion_.init(posture_apose_, 80f /* damper */, 1500f /* spring */); MuscleMotion.Node root_node = muscle_motion_.getRootNode(); look_at_ = new Vector3(0f, 1f, 0f); rigidbody_.setPosition(0f, 1f, 15f); var rot = Quaternion.LookRotation(look_at_ - rigidbody_.transform_.position_); rigidbody_.setRotation(ref rot); rigidbody_.setDamper(10f); rigidbody_.setRotateDamper(50f); root_node.rigidbody_.setDamper(10f); root_node.rigidbody_.setRotateDamper(40f); collider_ = MyCollider.createPlayer(); MyCollider.initSpherePlayer(collider_, ref rigidbody_.transform_.position_, 1f /* radius */); // muscle_motion_.fix(MuscleMotion.Parts.Ribs, 0.4f /* interpolate_ratio */); // muscle_motion_.fix(MuscleMotion.Parts.Ribs2); // muscle_motion_.fix(MuscleMotion.Parts.Ribs3, 0.4f /* interpolate_ratio */); // muscle_motion_.fix(MuscleMotion.Parts.Hip, 0.1f /* interpolate_ratio */); { /* body */ float damper = 60f; float spring_ratio = 800f; muscle_motion_.setParams(MuscleMotion.Parts.Ribs, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.Ribs2, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.Ribs3, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.Hip, damper, spring_ratio); } { /* arms */ float damper = 50f; float spring_ratio = 1000f; muscle_motion_.setParams(MuscleMotion.Parts.L_Shoulder, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_UpperArm, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_ForeArm, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_Wrist, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Shoulder, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_UpperArm, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_ForeArm, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Wrist, damper, spring_ratio); } { /* legs */ float damper = 30f; float spring_ratio = 500f; muscle_motion_.setParams(MuscleMotion.Parts.L_Thigh, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_Knee, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_Ancle, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_Toe, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Thigh, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Knee, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Ancle, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Toe, damper, spring_ratio); } { /* tales */ float damper = 10f; float spring_ratio = 200f; muscle_motion_.setParams(MuscleMotion.Parts.L_Tale1, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_Tale2, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_Tale3, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_Tale4, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Tale1, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Tale2, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Tale3, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Tale4, damper, spring_ratio); } { /* ribbons */ float damper = 2f; float spring_ratio = 100f; muscle_motion_.setParams(MuscleMotion.Parts.L_Ribbon1, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_Ribbon2, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Ribbon1, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_Ribbon2, damper, spring_ratio); } { /* suso */ float damper = 10f; float spring_ratio = 200f; muscle_motion_.setParams(MuscleMotion.Parts.L_SusoBack, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.L_SusoFront, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_SusoBack, damper, spring_ratio); muscle_motion_.setParams(MuscleMotion.Parts.R_SusoFront, damper, spring_ratio); } }