void Start() { checkPreset(); MeshFilter filter = (MeshFilter)GetComponent(typeof(MeshFilter)); OriginalMesh = filter.sharedMesh; WorkingMesh = Instantiate(filter.sharedMesh) as Mesh; filter.sharedMesh = WorkingMesh; ArrayList ActiveVertex = new ArrayList(); for (int i = 0; i < WorkingMesh.vertices.Length; i++) { ActiveVertex.Add(i); } vr = new VertexRubber[ActiveVertex.Count]; for (int i = 0; i < ActiveVertex.Count; i++) { int ref_index = (int)ActiveVertex[i]; vr[i] = new VertexRubber(transform.TransformPoint(WorkingMesh.vertices[ref_index]), m_Mass, m_Stiffness, m_Damping); vr[i].indexId = ref_index; } Renderer = GetComponent <MeshRenderer>(); WakeUp(); }
void Start() { Debug.Log(Presets); MeshFilter filter = (MeshFilter)GetComponent(typeof(MeshFilter)); OriginalMesh = filter.sharedMesh; WorkingMesh = Instantiate(filter.sharedMesh) as Mesh; filter.sharedMesh = WorkingMesh; ArrayList ActiveVertex = new ArrayList(); for (int i = 0; i < WorkingMesh.vertices.Length; i++) { if ((OriginalMesh.colors[i].r + OriginalMesh.colors[i].g + OriginalMesh.colors[i].b) != 3) { ActiveVertex.Add(i); } } ColorIntensity = new float[ActiveVertex.Count]; vr = new VertexRubber[ActiveVertex.Count]; for (int i = 0; i < ActiveVertex.Count; i++) { int ref_index = (int)ActiveVertex[i]; ColorIntensity[i] = (1 - ((OriginalMesh.colors[ref_index].r + OriginalMesh.colors[ref_index].g + OriginalMesh.colors[ref_index].b) / 3)) * EffectIntensity; vr[i] = new VertexRubber(transform.TransformPoint(OriginalMesh.vertices[ref_index]), mass, gravity, stiffness, damping); vr[i].indexId = ref_index; } V3_WorkingMesh = OriginalMesh.vertices; }
void InitVerts(int start, int end) { for (int i = start; i < end; i++) { int ix = vr[i].indices[0]; Vector3 vp = verts[ix]; Vector3 v3_target = tm.MultiplyPoint(vp); VertexRubber v = vr[i]; v.vel = Vector3.zero; v.pos = v3_target; } }
void UpdateVerts(int start, int end) { Vector3 p = Vector3.zero; //float t = Time.deltaTime; for (int i = start; i < end; i++) { int ix = vr[i].indices[0]; Vector3 vp = verts[ix]; Vector3 v3_target = tm.MultiplyPoint(vp); VertexRubber v = vr[i]; v.force.x = (v3_target.x - v.pos.x) * stiffness.x * v.stiff; v.acc.x = v.force.x * oomass; v.vel.x = damping.x * (v.vel.x + v.acc.x); v.pos.x += v.vel.x; // * t; v.force.y = (v3_target.y - v.pos.y) * stiffness.y * v.stiff; v.force.y -= grav; v.acc.y = v.force.y * oomass; v.vel.y = damping.y * (v.vel.y + v.acc.y); v.pos.y += v.vel.y; // * t; v.force.z = (v3_target.z - v.pos.z) * stiffness.z * v.stiff; v.acc.z = v.force.z * oomass; v.vel.z = damping.z * (v.vel.z + v.acc.z); v.pos.z += v.vel.z; // * t; v3_target = invtm.MultiplyPoint(vr[i].pos); p.x = vp.x + ((v3_target.x - vp.x) * v.weight * Intensity.x); p.y = vp.y + ((v3_target.y - vp.y) * v.weight * Intensity.y); p.z = vp.z + ((v3_target.z - vp.z) * v.weight * Intensity.z); v.cpos = p; for (int v1 = 0; v1 < vr[i].indices.Length; v1++) { int ix1 = vr[i].indices[v1]; sverts[ix1] = p; } } }
void Start() { Debug.Log(Presets); MeshFilter filter = (MeshFilter)GetComponent(typeof(MeshFilter)); OriginalMesh = filter.sharedMesh; WorkingMesh = Instantiate(filter.sharedMesh) as Mesh; filter.sharedMesh = WorkingMesh; ColorIntensity = new float[OriginalMesh.vertices.Length]; vr = new VertexRubber[OriginalMesh.vertices.Length]; for (int i = 0; i < OriginalMesh.vertices.Length; i++) { ColorIntensity[i] = (1 - ((OriginalMesh.colors[i].r + OriginalMesh.colors[i].g + OriginalMesh.colors[i].b) / 3)) * EffectIntensity; vr[i] = new VertexRubber(transform.TransformPoint(OriginalMesh.vertices[i]), mass, gravity, stiffness, damping); } }
void Init(MegaModifiers mod) { if (mod.verts == null) { return; } List <int> noweights = new List <int>(); List <int> ActiveVertex = new List <int>(); int wc = (int)channel; for (int i = 0; i < mod.verts.Length; i++) { // Dont add if we have already if (channel == MegaWeightChannel.None || mod.cols == null || mod.cols.Length == 0) { //if ( !HavePoint(mod.verts, ActiveVertex, mod.verts[i]) ) //ActiveVertex.Add(i); } else { if (mod.cols[i][wc] > threshold) { if (!HavePoint(mod.verts, ActiveVertex, mod.verts[i])) { ActiveVertex.Add(i); } } else { noweights.Add(i); } } } notmoved = noweights.ToArray(); if (ActiveVertex.Count > 0) { vr = new VertexRubber[ActiveVertex.Count]; for (int i = 0; i < ActiveVertex.Count; i++) { int ref_index = (int)ActiveVertex[i]; float stiff = 1.0f; if (stiffchannel != MegaWeightChannel.None && mod.cols != null && mod.cols.Length > 0) { stiff = mod.cols[ref_index][(int)stiffchannel]; } float intens = (mod.cols[ref_index][wc] - threshold) / (1.0f - threshold); vr[i] = new VertexRubber(transform.TransformPoint(mod.verts[ref_index]), intens, stiff); vr[i].indices = FindVerts(mod.verts, mod.verts[ref_index]); } } else { vr = null; } defined = true; }
void Start() { MeshFilter filter = (MeshFilter)GetComponent(typeof(MeshFilter)); OriginalMesh = filter.sharedMesh; WorkingMesh = Instantiate(filter.sharedMesh) as Mesh; filter.sharedMesh = WorkingMesh; ColorIntensity = new float[OriginalMesh.vertices.Length]; vr = new VertexRubber[OriginalMesh.vertices.Length]; for (int i = 0; i < OriginalMesh.vertices.Length; i++) { ColorIntensity[i] = (1 - ((OriginalMesh.colors[i].r + OriginalMesh.colors[i].g + OriginalMesh.colors[i].b) / 3)) * EffectIntensity; vr[i] = new VertexRubber(transform.TransformPoint(OriginalMesh.vertices[i]), mass, gravity, stiffness, damping); } }
void Start() { checkPreset(); MeshFilter filter = (MeshFilter)GetComponent(typeof(MeshFilter)); OriginalMesh = filter.sharedMesh; WorkingMesh = Instantiate(filter.sharedMesh) as Mesh; filter.sharedMesh = WorkingMesh; ArrayList ActiveVertex = new ArrayList(); for (int i = 0; i < WorkingMesh.vertices.Length; i++) { ActiveVertex.Add(i); } vr = new VertexRubber[ActiveVertex.Count]; for (int i = 0; i < ActiveVertex.Count; i++) { int ref_index = (int)ActiveVertex[i]; vr[i] = new VertexRubber(transform.TransformPoint(WorkingMesh.vertices[ref_index]), m_Mass, m_Stiffness, m_Damping); vr[i].indexId = ref_index; } Renderer = GetComponent<MeshRenderer>(); WakeUp(); }
// remove dups void Init(MegaModifiers mod) { if ( mod.verts == null ) return; List<int> noweights = new List<int>(); List<int> ActiveVertex = new List<int>(); int wc = (int)channel; for ( int i = 0; i < mod.verts.Length; i++ ) { // Dont add if we have already if ( channel == MegaWeightChannel.None || mod.cols == null || mod.cols.Length == 0 ) { //if ( !HavePoint(mod.verts, ActiveVertex, mod.verts[i]) ) //ActiveVertex.Add(i); } else { if ( mod.cols[i][wc] > threshold ) { if ( !HavePoint(mod.verts, ActiveVertex, mod.verts[i]) ) ActiveVertex.Add(i); } else noweights.Add(i); } } notmoved = noweights.ToArray(); if ( ActiveVertex.Count > 0 ) { vr = new VertexRubber[ActiveVertex.Count]; for ( int i = 0; i < ActiveVertex.Count; i++ ) { int ref_index = (int)ActiveVertex[i]; float stiff = 1.0f; if ( stiffchannel != MegaWeightChannel.None && mod.cols != null && mod.cols.Length > 0 ) { stiff = mod.cols[ref_index][(int)stiffchannel]; } //if ( channel != MegaWeightChannel.None && mod.cols != null && mod.cols.Length > 0 ) float intens = (mod.cols[ref_index][wc] - threshold) / (1.0f - threshold); vr[i] = new VertexRubber(transform.TransformPoint(mod.verts[ref_index]), intens, stiff); vr[i].indices = FindVerts(mod.verts, mod.verts[ref_index]); } } else vr = null; defined = true; }