JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://preview.babylonjs.com/babylon.js"></script>
<script src="https://pixijs.download/v4.8.2/pixi.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.0.2/TweenMax.min.js"></script>
<canvas id="renderCanvas" touch-action="none" width='500px' height='500px'></canvas>
JavaScript
var canvas = document.getElementById("renderCanvas");
// babylon.js rendering
var engine = new BABYLON.Engine(canvas, true);
var scene = new BABYLON.Scene(engine);
var camera = new BABYLON.FreeCamera("camera1", new BABYLON.Vector3(0, 5, -10), scene);
camera.setTarget(BABYLON.Vector3.Zero());
camera.attachControl(canvas, true);
var light = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(0, 1, 0), scene);
light.intensity = 0.7;
var sphere = BABYLON.Mesh.CreateSphere("sphere1", 16, 2, scene);
sphere.position.y = 1;
var ground = BABYLON.Mesh.CreateGround("ground1", 6, 6, 2, scene);
var isWebGL1 = engine.webGLVersion === 1;
// pixi.js rendering
var pixiRenderer = new PIXI.WebGLRenderer({
context: engine._gl,
view: engine.getRenderingCanvas(),
width: engine.getRenderWidth(),
height: engine.getRenderHeight(),
clearBeforeRender: false,
roundPixels: true,
autoStart: false
});
var stage = new PIXI.Container();
var sprite = PIXI.Sprite.from('https://i.imgur.com/1yLS2b8.jpg');
sprite.anchor.set(0.5);
sprite.position.set(canvas.width/2, canvas.height/2);
stage.addChild(sprite);
//Play animation with GSAP API
TweenMax.to(sprite, 1, {
rotation: Math.PI * 2,
ease: Power0.easeNone,
repeat: -1
});
TweenMax.to(ground.rotation, 2, {
y: Math.PI * 2,
ease: Power0.easeNone,
repeat: -1
});
engine.runRenderLoop(function() {
if(isWebGL1)
pixiRenderer.reset();
scene.render();
engine.wipeCaches(true);
pixiRenderer.reset();
pixiRenderer.render(stage);
});