HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/KWessing/in2tech.nl/wwwroot/wp-content/plugins/stl-viewer/js/STLViewer.js
// STLViewer.js
// Written by Christian Lölkes
// Based on examples from threejs.org

var loader;
var controls;

var camera;
var camera_fov;

var mesh_object;
var mesh_floor;

var scene;
var renderer;
var renderer_antialias = true;
var material_object;

var dimensions = new THREE.Vector4();

var loaded;
var geometry_object;
var material_floor;
var geometry_floor;
var texture_floor;

var floor_scale_x = 100;
var floor_scale_y = 100;
var floor_scale_z = 1;
var floor_scale = new THREE.Vector3( floor_scale_x, floor_scale_y, floor_scale_z );
var floor_repeat_x = 10;
var floor_repeat_y = 10;
var floor_repeat = new THREE.Vector2( floor_repeat_x, floor_repeat_y);

//var fog_color = 0xd9dee5;
//var fog_near = 1;
//var fog_far = 10000;
var fog;

//var ambient_light_color = 0x202020;
var ambient_light;

var point_light;
//var point_light_color = 0xffffff;
//var point_light_intensity = 0.7;

var directional_light;
//var directional_light_color = 0xffffff;
//var directional_light_intensity = 0.7;

function viewTop() {
    var size;
    var size_factor = 2.2;
    if( dimensions.y > dimensions.x ) size = dimensions.y;
    else size = dimensions.x;
    camera.position.set( 0, 0, size * size_factor );
    camera.up.set( 0, 1, 0);
}

function viewSide( side ) {
    var size;
    var size_factor = 2.2;
    var window_factor = SCREEN_HEIGHT/SCREEN_WIDTH;
    var factor = new THREE.Vector4( 0, 0, THREE.Math.clamp( window_factor, 0, 1 ), THREE.Math.clamp( 1 / window_factor, 0, 1 ) );

    if( dimensions.z > dimensions.x ) size = dimensions.z;
    else size = dimensions.x;

    if( side == 'front' )      { factor.setComponent(1, -1); }
    else if( side == 'rear' )  { factor.setComponent(1, 1); }
    else if( side == 'left' )  { factor.setComponent(0, -1); }
    else if( side == 'right' ) { factor.setComponent(0, 1); }
    else { factor.setComponent(1, -1); } // Default to front

    camera.position.set( factor.x * ( size * size_factor * factor.z + dimensions.x ), factor.y * ( size * size_factor * factor.w - dimensions.y) ,0 );
    camera.up.set( 0, 0, 1 );
}

// IMPORTANT

function $( id ) {
	return document.getElementById( id );
}

function noWebGL() { 	// Runs if no WebGL is found
	$( 'progress' ).style.display = 'none';
	$( 'canvas' ).style.display = 'none';
	$( 'webGLError' ).style.display = 'block';
	$( 'quality_notes' ).style.display = 'none';
} // End of noWebGL()
	
function init( inputfiletype ) {
    $( 'progress' ).style.display = 'block';
    $( 'canvas' ).style.display = 'block';
    $( 'webGLError' ).style.display = 'none';

	camera      = new THREE.PerspectiveCamera( camera_fov, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 25000 );
    controls    = new THREE.TrackballControls( camera, container );
    scene       = new THREE.Scene();
    renderer    = new THREE.WebGLRenderer( { antialias: renderer_antialias } );
    fog         = new THREE.Fog( fog_color, fog_near, fog_far );
    ambient_light       = new THREE.AmbientLight( ambient_light_color );
    directional_light   = new THREE.DirectionalLight( directional_light_color, directional_light_intensity );
    point_light         = new THREE.PointLight( point_light_color, point_light_intensity);
    material_object     = new THREE.MeshLambertMaterial( { color:0xffffff, shading: THREE.FlatShading } );
    //material_object = new THREE.MeshPhongMaterial( { ambient: 0x555555, color: 0xffffff, specular: 0x111111, shininess: 200 } );

    texture_floor   = THREE.ImageUtils.loadTexture( floor );
    material_floor  = new THREE.MeshBasicMaterial( { map: texture_floor } );
    geometry_floor  = new THREE.PlaneGeometry( 100, 100 );
    mesh_floor      = new THREE.Mesh( geometry_floor, material_floor );

    loader = new THREE.STLLoader();
    //if(inputfiletype == 'STL') loader = new THREE.STLLoader();
    //if(inputfiletype == 'OBJ') loader = new THREE.OBJLoader();

    controls.rotateSpeed = 1.0;
    controls.zoomSpeed = 1.2;
    controls.panSpeed = 0.8;

    controls.noZoom = false;
    controls.noPan = true;
    controls.noRotate = false;

    controls.staticMoving = false;
    controls.dynamicDampingFactor = 0.3;

    controls.keys = [ 65, 83, 68 ];
    controls.addEventListener( 'change', render );

    scene.fog = fog;
				
	scene.add( ambient_light );
    directional_light.position.normalize();
    scene.add( directional_light );
    scene.add( point_light );
    camera.lookAt( 0, 0, 0 );

    loader.load( file, function ( geometry ) {
        geometry_object = geometry;
		mesh_object = new THREE.Mesh( geometry, material_object );
        mesh_object.castShadow = mesh_object.receiveShadow = true;

        geometry.computeBoundingBox();
        geometry.computeBoundingSphere();

        dimensions.subVectors( geometry.boundingBox.max, geometry.boundingBox.min );
        dimensions.setW( geometry.boundingSphere.radius );

        setRotationOffset();

        camera.position.set( 0, 0, dimensions.w * 2.2 );
		mesh_object.rotation.copy( object_rotation_offset );
        setLights();
        setFloor();
        scene.add( mesh_object );

	} );

	// Floor
    texture_floor.wrapS = texture_floor.wrapT = THREE.RepeatWrapping;
    texture_floor.repeat.copy( floor_repeat );

	mesh_floor.scale.copy( floor_scale );
	mesh_floor.receiveShadow = true;
	scene.add( mesh_floor );

	// RENDERER
	renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
	renderer.setClearColor( scene.fog.color, 1 );
	renderer.autoClear = false;

	renderer.setSize(container.offsetWidth, container.offsetHeight);
	renderer.domElement.style.position = 'relative';
	container.appendChild( renderer.domElement );

} // End of init()

function animate() {
    if ( geometry_object && !loaded ) {
        loaded = true;
        mesh_floor.position.z = - dimensions.z / 2;
        viewSide('front');
        $( 'progress' ).style.display = 'none';
    }
    requestAnimationFrame( animate );
    controls.update();
	render();

} // End of animate()

function render() {
	camera.lookAt( scene.position );
	renderer.clear();
	renderer.render( scene, camera );
} // End of render()

// Le awesome stuff

if ( ! Detector.webgl ) noWebGL();
else {
    init('STL');
    animate();
}