JSFiddle - React, Tailwind, and code Playground
by realhunts
HTML
<script src="http://threejs.org/build/three.min.js"></script>
<script src="http://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script type="text/javascript" src="https://rawcdn.githack.com/foo123/MOD3/master/build/mod3.bundle.js"></script>
<script type="text/javascript" src="https://rawcdn.githack.com/foo123/MOD3/master/examples/js/Tween.js"></script>
<script>
/**
*
* MOD3 Plugin for Three.js
*
*
**/
!function(MOD3, undef){
"use strict";
var ModConstant = MOD3.ModConstant,
X = ModConstant.X, Y = ModConstant.Y, Z = ModConstant.Z,
XYZ = MOD3.xyz, XYZi = MOD3.XYZi, V = MOD3.VecArray,
VertexThree, MeshThree
;
VertexThree = MOD3.VertexThree = MOD3.Class( MOD3.VertexProxy, {
constructor: function VertexThree( vertex, mesh ) {
var self = this;
self.$super('constructor', vertex, mesh);
self.name = "VertexThree";
},
setVertex: function( vt ) {
var self = this;
/* Three js uses vector3 now instead of vertex */
self.vertex = vt;
self.original = new V( [vt.x, vt.y, vt.z] );
return self;
},
getXYZ: function( ) {
var vt = this.vertex, xyz = new V(3);
xyz[0] = vt.x; xyz[1] = vt.y; xyz[2] = vt.z;
return xyz;
},
getX: function( ) {
return this.vertex.x;
},
getY: function( ) {
return this.vertex.y;
},
getZ: function( ) {
return this.vertex.z;
},
getValue: function( axis ) {
return this.vertex[ XYZ[XYZi[axis]] ] || 0;
},
setXYZ: function( xyz ) {
var vt = this.vertex;
vt.x = xyz[0]; vt.y = xyz[1]; vt.z = xyz[2]-500;
return this;
},
setX: function( vo ) {
this.vertex.x = vo;
return this;
},
setY: function( vo ) {
this.vertex.y = vo;
return this;
},
setZ: function( vo ) {
this.vertex.z = vo;
return this;
},
...
JavaScript
// a basic three.js scene
var container, renderer, scene, camera, controls;
init();
animate();
function init() {
// renderer
renderer = new THREE.WebGLRenderer({
antialias: false
});
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0xccccff);
container = document.createElement('div');
document.body.appendChild(container);
container.appendChild(renderer.domElement);
// scene
scene = new THREE.Scene();
// camera
camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000);
camera.position.set(0, 200, 800);
camera.lookAt(scene.position);
// (camera) controls
// mouse controls: left button to rotate,
// mouse wheel to zoom, right button to pan
controls = new THREE.OrbitControls(camera, renderer.domElement);
// light
var light = new THREE.PointLight(0xffffff);
light.position.set(100, 250, 250);
scene.add(light);
// mesh
var sphereGeometry = new THREE.SphereGeometry(100, 32, 16);
var sphereMaterial = new THREE.MeshLambertMaterial({
color: 0xff0000
});
var sphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
sphere.position.y = 100;
// scene.add(sphere);
var planeGeometry = new THREE.PlaneGeometry(500, 500, 10, 10);
var planeMaterial = new THREE.MeshLambertMaterial({
color: 0x888888,
side: THREE.DoubleSide
});
var plane = new THREE.Mesh(planeGeometry, planeMaterial);
plane.rotation.x = -Math.PI / 2;
// scene.add(plane);
var materials=[];
for (var mii=0;mii<6;mii++)
{
var mat=new THREE.MeshBasicMaterial( { color: 0xffffff, side: THREE.DoubleSide } );
materials.push( mat );
}
cube =new THREE.Mesh( new THREE.PlaneGeometry(500, 500, 10, 10), new THREE.MeshFaceMaterial( materials) );
scene.add( cube...