JSFiddle - React, Tailwind, and code Playground

by jxnx888

HTML

<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js'></script>
<script src='https://threejs.org/build/three.js'></script>
<script src='https://threejs.org/examples/js/controls/OrbitControls.js'></script>
<script src='https://threejs.org/examples/js/controls/DragControls.js'></script>
<script src='https://threejs.org/examples/js/postprocessing/EffectComposer.js'></script>
<script src='https://threejs.org/examples/js/postprocessing/OutlinePass.js'></script>
<script src='https://threejs.org/examples/js/shaders/CopyShader.js'></script>
<script src='https://threejs.org/examples/js/postprocessing/ShaderPass.js'></script>
<script src='https://threejs.org/examples/js/postprocessing/RenderPass.js'></script>
<script src='https://threejs.org/examples/js/shaders/FXAAShader.js'></script>
<script src='https://threejs.org/examples/js/controls/TransformControls.js'></script>
<div class="main_wrapper">
	<div id="container" class="clearfix"></div>
</div>

CSS

#container {
    background: #FFF4AF; /* Old browsers */
    background: -moz-linear-gradient(top,  #FFF4AF 0%, #FFE548 100%); /* FF3.6-15 */
    background: -webkit-linear-gradient(top,  #FFF4AF 0%,#FFE548 100%); /* Chrome10-25,Safari5.1-6 */
    background: linear-gradient(to bottom, #FFF4AF 0%,#FFE548 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FFF4AF', endColorstr='#FFE548',GradientType=0 ); /* IE6-9 */
}

JavaScript

var mobile = true;
	var container = document.getElementById( 'container' ); //
	var camera, scene, renderer;
	var cameraZoom = 1;
	var outlinePass, composer, effectFXAA;
	var plane;
	var gridHelper, gradGroundMesh, gradGroundMesh1;
	var mouse, raycaster, isShiftDown = false;
	var controls;
	var mouseHelper, mouseHelperMaterial;
	var cubeGeo, cubeMaterial;
	var controlsMoved = false;
	var objects = [];
	var currentObj; //当前形状
	var currentObjMaterial = new THREE.MeshLambertMaterial( { color: 0xdddddd } );
	var currentShapeType;
	var currentColor;
	var currentColorFlag = 0;
	var currentObjMesh; //当前obj mesh
	var shapeHelperObjects = [];
	var shapesObj = []; //所有的当前已放置的obj
	var currentAllObjs = []; //所有的当前已放置的obj
	var transformControl;
	var transformControlModeType = 1;
	var transformControlMove = false;
	var focusedTransformObj;
	var intersectsSelect = [];
	var intersection = {
		intersects: false,
		point: new THREE.Vector3(),
		normal: new THREE.Vector3()
	};
	var allOperation = [];//all the operated operation(undo)
	var redoOperation = [];//all the redo operation
	var eachObjectInfo = {};//每一个对象的每一个步骤;
	var eachRedoObjectInfo = {};//每一个对象的每一个步骤;
	var undoArr = [];
	var redoArr = [];
	var shootedFlag = false;


	var DEGTORAD = THREE.Math.DEG2RAD;
	var params = {  //params for GUI
		SUBMIT: function () {
			if (objects.length > 1) {
				exportASCII();
			}
		},
		SUBMITGLTFE: function () {
			if (objects.length > 1) {
				exportGLTF();
			}
		},
		Geometry: 0,//选中的形状
		Cube: function () {
			changeShapes( 0 );
		},
		Cylinder: function () {
			changeShapes( 1 );
		},
		Cone: function () {
			changeShapes( 2 );
		},
		Ball: function () {
			changeShapes( 3 );
		},
		Doughnut: function () {
			changeShapes( 4 );
		},
		Standing: function () {
			loadSTL( 0 );
		},
		Climbing: function () {
			loadSTL( 1 );
		},
		Lying: function () {
			loadSTL( 2 );
		},
		Sitting: function () {
			loadSTL( 3 );
		},
		TyrannosaurusRex: function () {
			loadSTL( 4 );
		},

		color:...