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);
});