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); }