-add DDSLoader -add test file for OBJLoader, MTLLoader, DDSLoader - minor changes in core

This commit is contained in:
Flur
2017-07-08 14:50:46 +03:00
parent 23b7cd1674
commit 2d0f4f99e2
7 changed files with 101 additions and 2 deletions

View File

@@ -27,5 +27,6 @@ export * from "./three-vrcontrols";
export * from "./three-vreffect";
export * from "./three-objloader";
export * from "./three-mtlloader";
export * from "./three-ddsloader";
export as namespace THREE;

View File

@@ -0,0 +1,83 @@
// https://github.com/mrdoob/three.js/blob/master/examples/webgl_loader_obj_mtl.html
() => {
var container: HTMLElement;
var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer;
var mouseX = 0, mouseY = 0;
var windowHalfX = window.innerWidth / 2;
var windowHalfY = window.innerHeight / 2;
init();
animate();
function init() {
container = document.createElement( 'div' );
document.body.appendChild( container );
camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 2000 );
camera.position.z = 250;
// scene
scene = new THREE.Scene();
var ambient = new THREE.AmbientLight( 0x444444 );
scene.add( ambient );
var directionalLight = new THREE.DirectionalLight( 0xffeedd );
directionalLight.position.set( 0, 0, 1 ).normalize();
scene.add( directionalLight );
// model
var onProgress = function ( xhr: ProgressEvent ) {
if ( xhr.lengthComputable ) {
var percentComplete = xhr.loaded / xhr.total * 100;
console.log( Math.round(percentComplete) + '% downloaded' );
}
};
var onError = function ( xhr: ErrorEvent ) { };
THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
var mtlLoader: THREE.MTLLoader = new THREE.MTLLoader();
mtlLoader.setPath( 'obj/male02/' );
mtlLoader.load( 'male02_dds.mtl', function( materials: THREE.MaterialCreator ) {
materials.preload();
var objLoader: THREE.OBJLoader = new THREE.OBJLoader();
objLoader.setMaterials( materials );
objLoader.setPath( 'obj/male02/' );
objLoader.load( 'male02.obj', function ( object: THREE.Object3D ) {
object.position.y = - 95;
scene.add( object );
}, onProgress, onError );
});
renderer = new THREE.WebGLRenderer();
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement );
document.addEventListener( 'mousemove', onDocumentMouseMove, false );
//
window.addEventListener( 'resize', onWindowResize, false );
}
function onWindowResize() {
windowHalfX = window.innerWidth / 2;
windowHalfY = window.innerHeight / 2;
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize( window.innerWidth, window.innerHeight );
}
function onDocumentMouseMove( event: MouseEvent ) {
mouseX = ( event.clientX - windowHalfX ) / 2;
mouseY = ( event.clientY - windowHalfY ) / 2;
}
//
function animate() {
requestAnimationFrame( animate );
render();
}
function render() {
camera.position.x += ( mouseX - camera.position.x ) * .05;
camera.position.y += ( - mouseY - camera.position.y ) * .05;
camera.lookAt( scene.position );
renderer.render( scene, camera );
}
}

View File

@@ -2087,7 +2087,7 @@ export class Loader {
export interface LoaderHandler {
handlers: (RegExp | Loader)[];
add(regex: RegExp, loader: Loader): void;
add(regex: RegExp, loader: Loader | CompressedTextureLoader): void;
get(file: string): Loader;
}

11
types/three/three-ddsloader.d.ts vendored Normal file
View File

@@ -0,0 +1,11 @@
// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/DDSLoader.js
import {CompressedPixelFormat, CompressedTextureLoader} from "./three-core";
export class DDSLoader extends CompressedTextureLoader {
constructor();
parse(buffer: string, loadMipmaps: boolean) : { mipmaps: { data: Uint8Array, width: number, height: number }[], width: number, height: number, format: CompressedPixelFormat, mipmapCount: number };
}

View File

@@ -1,3 +1,5 @@
// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/MTLLoader.js
import {Material} from "./three-core";
import {LoadingManager} from "./three-core";

View File

@@ -1,3 +1,4 @@
// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/OBJLoader.js
import {Material} from "./three-core";
import {LoadingManager} from "./three-core";

View File

@@ -52,6 +52,7 @@
"test/examples/effects/vreffect.ts",
"test/examples/controls/vrcontrols.ts",
"test/examples/ctm/ctmloader.ts",
"test/examples/octree.ts"
"test/examples/octree.ts",
"test/examples/loaders/webgl_loader_obj_mtl.ts"
]
}