예제 #1
0
    protected override void Interpolation(ref McEdge edge)
    {
        base.Interpolation(ref edge);
        float d = Vector3.Distance(edge.v3, sphere.position);

        edge.n3 = Vector3.Normalize(1.0f / (d * d) * (edge.v3 - sphere.position) * 2.0f);
        edge.uv = new Vector2(edge.v3.x * 0.5f + 0.5f, edge.v3.y * 0.5f + 0.5f);
    }
 protected override void AddEdge(ref McEdge edge)
 {
     if (edge.vi != -1)
     {
         return;
     }
     edge.vi = m_EdgeVerticesIndex++;
     m_VerticesBuffer.Add(edge.v3);
     m_NormalBuffer.Add(edge.n3);
 }
    protected override void Interpolation(ref McEdge edge)
    {
        base.Interpolation(ref edge);
        Vector3 result = Vector3.zero;

        for (int i = 0; i < blobs.Length; i++)
        {
            Vector3 current = edge.v3 - (Vector3)blobs[i];
            float   mag     = current.magnitude;
            float   pwr     = .5f * (1f / (mag * mag * mag)) * blobs[i].w;
            result = result + (current * pwr);
        }
        edge.n3 = result.normalized;
        edge.uv = new Vector2(edge.v3.x * 0.5f + 0.5f, edge.v3.y * 0.5f + 0.5f);
    }