Физика — это масло к хлебу виртуальной реальности. Играя с SDK AltspaceVR, я задался вопросом —
Можно ли добавить физику в SDK altspaceVR?
Оказывается, вы можете… вроде.
Как это было достигнуто?
При взломе кода Altspace SDK для принудительной интеграции Physijs я бы сначала порекомендовал взглянуть на физики wiki. Вы можете увидеть пример интеграции здесь.
Во-первых, мы должны настроить рабочие сценарии Physijs внутри функции моделирования SDK:
altspace.utilities.Simulation = function (config) { Physijs.scripts.ammo = ‘../dist/ammo.js’; Physijs.scripts.worker = ‘../dist/physijs_worker.js’; ... ...
Затем мы заменяем переменную сцены Altspace по умолчанию на сцену Physijs:
var scene = new Physijs.Scene({ reportsize: 50, fixedTimeStep: 1 / 60 }); scene.setGravity(new THREE.Vector3( 0, -200, 0 ))
Наконец, мы должны вызывать симуляцию в каждом кадре loop():
function loop() { scene.simulate(); //physijs simulation window.requestAnimationFrame(loop); if (scene.updateAllBehaviors) { scene.updateAllBehaviors(); renderer.render(scene, camera); }
Я знаю, что вы очень взволнованы, но я должен упомянуть одну загвоздку:
Я еще не придумал, как заставить события курсора работать с физическими объектами. На самом деле, я даже не уверен, где они определены в SDK. Если у вас есть идеи, как это решить, дайте мне знать в комментариях.
Если вы хотите попробовать, исходный код проекта в формате GIF можно найти здесь: https://github.com/william-bratches/altspace-vr-physics