трудно воспринимать трехмерный вид одного объекта, поэтому представьте себе несколько объектов, движущихся независимо ... позвольте объектам двигаться самостоятельно
Я предлагаю вам ввести понятие перспективной проекции ... вот почему объекты отодвигаясь, становитесь меньше
, чтобы было проще назначить объектам размер, а затем масштабировать этот размер, используя их местоположение измерения Z
в дополнение к назначению каждому объекту местоположения в 3D (x, y, z) поместите их все в мир, скажем, внутри куба или сферы
запускайте каждый новый объект в каком-то случайном направлении со случайной скоростью, случайным размером
поместите все объекты в некоторую структуру данных, чтобы у вас есть массив, по которому вы можете выполнять итерацию, чтобы делать что-то с каждым объектом
ввести понятие времени в этот мир ... перебирать структуру данных ваших объектов и выполнять действия, как в
аккуратно переместите координаты x, y, z текущего объекта на крошечный бит в каждом затемненном месте ... сохраните тракт знака (pos / n например) каждого приращения в каждом измерении
, если текущий x, y или z выходит за пределы внутренней части куба или сферы, переключите знак приращения для этого измерения, как упомянуто выше
когда вы рисуете данный объект, масштабируйте его размер на основе его размера Z ... это перспективная проекция
object_rendered_size = object_constant_size * Z dimension for this object
часы в следующую эпоху ... поместите над l oop внутри внешнего l oop, чтобы все продолжало двигаться все время
И да, это даст вам 3D ... нет необходимости сразу переходить в WebGL, пока такие проекты не закончатся, просто закодируйте сами себя ... с сегодняшним оборудованием вы можете go очень далеко, используя свой текущий подход к использованию холста ... научитесь линейной алгебре управлять местоположением объекта или камеры с помощью матрицы механика
Удачи !!!