none
Молния

    Вопрос

  • Мне требуется создать систему частиц "Молния", которая распространяется от A(x0, y0, z0) до B(x1, y1, z1), посоветуйте хороший алгоритм генерации шума между A и B чтобы получалась реалистичная молния.
    14 апреля 2011 г. 17:07

Ответы

  •     private List<Vector3> points;

        private void fract(Vector3 A, Vector3 B, float factor, float fracDec, int maxFracDepth, int fracCount) {

            Vector3 dir, planeU, planeV, C;

            fracCount++;

            if (fracCount > maxFracDepth) {

                points.Add(B);

                return;

            }

     

            dir = B - A;

            planeU = Vector3.Cross(dir, Vector3.up);

            planeV = Vector3.Cross(planeU, dir);

            planeU.Normalize();

            planeV.Normalize();

     

            C = 0.5f * (A + B) + factorMod * factor *  planeV * (Random.value - 0.5f);

            fract(A, C, factor * fracDec, fracDec,  maxFracDepth, fracCount);

            fract(C, B, factor * fracDec, fracDec, maxFracDepth, fracCount);

        }

    За неимением лучшего использовал стандартный фрактальный метод деления отрезка пополам. Общий код построения точек молнии выше.


    Что получилось:




    26 апреля 2011 г. 16:05