Example #1
0
    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();
    }
Example #2
0
    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;
        }
    }
Example #4
0
    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;
            }
        }
    }
Example #5
0
    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();
        }
Example #9
0
	// 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;
	}