Я сейчас создаю небольшой движок 3D-частиц во флэш-памяти, использующий спрайты.
, чтобы установить положение каждого спрайта, который я использую с помощью функции projectVector ниже.(матрица viewTransform - это матрица мира частиц, соединенная с матрицей перспективной проекции)
var projectedPoint:Vector3D = Utils3D.projectVector(viewTransform, point);
sprite.x = projectedPoint.x;
sprite.y = projectedPoint.y;
это действительно хорошо работает, когда спрайты размещаются именно там, где они должны быть: D Проблема, с которой я столкнулся, заключается в попытке выяснить,как рассчитать масштаб каждой частицы на основе расстояния от камеры ..
sprite.scaleX = sprite.scaleY = ??
Если бы я не использовал матрицу перспективной проекции, я обычно делал бы что-то подобное ..
var scaleRatio:Number = (focus * zoom)/(focus + particle.globalz);
particle.depth = scaleRatio;
sprite.x = particle.globalx * scaleRatio;
sprite.y = particle.globaly * scaleRatio;
// set scale..
sprite.scaleX = sprite.scaleY = scaleRatio;
Если есть кто-нибудь, кто сможет показать мне, как рассчитать «scaleRatio», используя матрицу перспективной проекции, которая будет тузом
спасибо!