CirclesOnObjects
Attempting to render 2d circles on a loaded 3d object using THREE.js
by Bladetrick
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/91/three.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
<title>three.js webgl - decals - Decal Splatter</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
</head>
<body>
<div id="container"></div>
</body>
</html>
CSS
body {
background: #777;
padding: 0;
margin: 0;
font-weight: bold;
overflow: hidden;
}
#info {
position: absolute;
top: 0px;
width: 100%;
color: #ffffff;
padding: 5px;
font-family: Monospace;
font-size: 13px;
text-align: center;
}
a {
color: #ffffff;
}
JavaScript
var container = document.getElementById( 'container' );
var renderer, scene, camera, stats;
var tailcone, mesh, decal;
var raycaster;
var line;
var intersection = {
intersects: false,
point: new THREE.Vector3(),
normal: new THREE.Vector3()
};
var mouse = new THREE.Vector2();
var modelloader;
var partmodel;
var wirehelper;
var decalDiffuse;
var decalNormal;
var decalMaterial;
var decals = [];
var mouseHelper;
var position = new THREE.Vector3();
var orientation = new THREE.Euler();
var size = new THREE.Vector3( 10, 10, 10 );
var up = new THREE.Vector3( 0, 1, 0 );
var params = {
minScale: 10,
maxScale: 20,
rotate: true,
clear: function() {
removeDecals();
}
};
window.addEventListener('load', init);
function init() {
// Renderer
renderer = new THREE.WebGLRenderer( { antialias: true } );
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild(renderer.domElement);
// Frame Stats
stats = new Stats();
container.appendChild( stats.dom );
scene = new THREE.Scene();
// Camera & Controls
camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 1000 );
camera.position.z = 120;
camera.target = new THREE.Vector3();
var controls = new THREE.OrbitControls( camera, renderer.domElement );
controls.minDistance = 10;
controls.maxDistance = 20;
// Lights
scene.add( new THREE.AmbientLight( 0x443333 ) );
var light = new THREE.DirectionalLight( 0xffddcc, 1 );
light.position.set( 1, 0.75, 0.5 );
scene.add( light );
var light = new THREE.DirectionalLight( 0xccccff, 1 );
light.position.set( -1, 0.75, -0.5 );
scene.add(light);
var geometry = new THREE.BufferGeometry();
geometry.setFromPoints( [ new THREE.Vector3(), new THREE.Vector3() ] );
line = new THREE.Line( geometry, new...