提交 b838b38f 编写于 作者: A alteredq

Moved doubleSided / flipSided properties from Object3D into Material.

Still needs to be done: canvas renderer / picking / canvas examples.
上级 686c8eff
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
......@@ -81,10 +81,9 @@
// PLANE
mesh = new THREE.Mesh( new THREE.PlaneGeometry( 100, 100 ), new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff } ) );
mesh = new THREE.Mesh( new THREE.PlaneGeometry( 100, 100 ), new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff, doubleSided: true } ) );
mesh.position.y = -500;
mesh.scale.x = mesh.scale.y = mesh.scale.z = 2;
mesh.doubleSided = true;
scene.add( mesh );
// CYLINDER
......@@ -113,7 +112,7 @@
var face = new THREE.Face3( geometry.vertices.push( v0 ) - 1, geometry.vertices.push( v1 ) - 1, geometry.vertices.push( v2 ) - 1, null, null, geometry.materials.length );
geometry.materials.push( new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff } ) );
geometry.materials.push( new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff, doubleSided: true } ) );
geometry.faces.push( face );
......@@ -127,12 +126,10 @@
scene.add( group );
mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial() );
mesh.doubleSided = true;
group.add( mesh );
/*
mesh = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( { color: 0xff0000, opacity: 0.5, transparent: true, wireframe: true, wireframeLinewidth: 10 } ) );
mesh.doubleSided = true;
mesh = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( { color: 0xff0000, opacity: 0.5, transparent: true, wireframe: true, wireframeLinewidth: 10, doubleSided: true } ) );
group.add( mesh );
*/
......
......@@ -169,8 +169,6 @@
buffalo = new THREE.SkinnedMesh( geometry, material, false );
//buffalo.doubleSided = true;
buffalo.position.x = - ( gridx - 1 ) * sepx * 0.5 + x * sepx + Math.random() * 0.5 * sepx;
buffalo.position.z = - ( gridz - 1 ) * sepz * 0.5 + z * sepz + Math.random() * 0.5 * sepz - 500;
......
......@@ -51,8 +51,8 @@
scene.add( light );
materials = [
new THREE.MeshLambertMaterial( { ambient: 0xbbbbbb, map: THREE.ImageUtils.loadTexture( 'textures/ash_uvgrid01.jpg' ) } ),
new THREE.MeshBasicMaterial( { color: 0xffffff, wireframe: true, transparent: true, opacity: 0.1 } )
new THREE.MeshLambertMaterial( { ambient: 0xbbbbbb, map: THREE.ImageUtils.loadTexture( 'textures/ash_uvgrid01.jpg' ), doubleSided: true } ),
new THREE.MeshBasicMaterial( { color: 0xffffff, wireframe: true, transparent: true, opacity: 0.1, doubleSided: true } )
];
object = THREE.SceneUtils.createMultiMaterialObject( new THREE.CubeGeometry( 100, 100, 100, 4, 4, 4 ), materials );
......@@ -77,7 +77,6 @@
scene.add( object );
object = THREE.SceneUtils.createMultiMaterialObject( new THREE.PlaneGeometry( 100, 100, 4, 4 ), materials );
object.children[ 0 ].doubleSided = true;
object.position.set( -200, 0, 0 );
scene.add( object );
......@@ -94,7 +93,6 @@
}
object = THREE.SceneUtils.createMultiMaterialObject( new THREE.LatheGeometry( points, 20 ), materials );
object.children[ 0 ].doubleSided = true;
object.position.set( 200, 0, 0 );
scene.add( object );
......
......@@ -62,8 +62,8 @@
scene.add( light );
materials = [
new THREE.MeshLambertMaterial( { ambient: 0xbbbbbb, map: THREE.ImageUtils.loadTexture( 'textures/ash_uvgrid01.jpg' ) } ),
new THREE.MeshBasicMaterial( { color: 0xffffff, wireframe: true, transparent: true, opacity: 0.1 } )
new THREE.MeshLambertMaterial( { ambient: 0xbbbbbb, map: THREE.ImageUtils.loadTexture( 'textures/ash_uvgrid01.jpg' ), doubleSided: true } ),
new THREE.MeshBasicMaterial( { color: 0xffffff, wireframe: true, transparent: true, opacity: 0.1, doubleSided: true } )
];
......@@ -94,19 +94,19 @@
var geo;
// Klein Bottle
geo = new THREE.ParametricGeometry(THREE.ParametricGeometries.klein, 20, 20);
object = THREE.SceneUtils.createMultiMaterialObject( geo, materials );
object.children[ 0 ].doubleSided = true;
object.position.set( 0, 0, 0 );
object.scale.multiplyScalar(10);
object.scale.multiplyScalar( 10 );
scene.add( object );
// Mobius Strip
geo = new THREE.ParametricGeometry(THREE.ParametricGeometries.mobius, 20, 20);
object = THREE.SceneUtils.createMultiMaterialObject( geo, materials );
// object.children[ 0 ].doubleSided = true;
object.position.set( 10, 0, 0 );
object.scale.multiplyScalar(100);
object.scale.multiplyScalar( 100 );
scene.add( object );
var geo = new THREE.ParametricGeometry(THREE.ParametricGeometries.plane(200, 200), 10, 20);
......@@ -145,12 +145,10 @@
// object = THREE.SceneUtils.createMultiMaterialObject( new THREE.PlaneGeometry( 400, 400, 4, 4 ), materials );
// // object.children[ 0 ].doubleSided = true;
// object.position.set( -200, 100, 0 );
// scene.add( object );
// object = THREE.SceneUtils.createMultiMaterialObject( new THREE.PlaneGeometry2( 400, 400, 4, 4 ), materials );
// object.children[ 0 ].doubleSided = true;
// object.position.set( -200, 100, 0 );
// scene.add( object );
......
......@@ -125,39 +125,41 @@
function setScale() {
scale = parseInt(document.getElementById('scale').value);
tubeMesh.scale.set(scale, scale, scale);
scale = parseInt( document.getElementById('scale').value );
tubeMesh.scale.set( scale, scale, scale );
}
function addGeometry(geometry, color) {
function addGeometry( geometry, color ) {
// 3d shape
tubeMesh = THREE.SceneUtils.createMultiMaterialObject(geometry, [
new THREE.MeshLambertMaterial({
color: color,
opacity: (geometry.debug) ? 0.2 : 0.8,
transparent: true
}),
new THREE.MeshBasicMaterial({
color: 0x000000,
opacity: 0.5,
wireframe: true
})]);
// 3d shape
if (geometry.debug) tubeMesh.add(geometry.debug);
tubeMesh = THREE.SceneUtils.createMultiMaterialObject( geometry, [
new THREE.MeshLambertMaterial({
color: color,
opacity: geometry.debug ? 0.2 : 0.8,
transparent: true
}),
new THREE.MeshBasicMaterial({
color: 0x000000,
opacity: 0.5,
wireframe: true
})]);
//mesh.children[0].doubleSided = true;
parent.add(tubeMesh);
if ( geometry.debug ) tubeMesh.add( geometry.debug );
parent.add( tubeMesh );
}
function animateCamera(toggle) {
function animateCamera( toggle ) {
if ( toggle ) {
if (toggle) {
animation = !animation;
document.getElementById('animation').value = 'Camera Spline Animation View: ' + (animation? 'ON': 'OFF');
}
lookAhead = document.getElementById('lookAhead').checked;
......@@ -198,6 +200,7 @@
scene = new THREE.Scene();
//
camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 0.01, 1000);
splineCamera = new THREE.PerspectiveCamera(84, window.innerWidth / window.innerHeight, 0.01, 1000);
cameraHelper = new THREE.CameraHelper(splineCamera);
......
......@@ -130,7 +130,8 @@
attributes: attributes,
vertexShader: document.getElementById( 'vertexshader' ).textContent,
fragmentShader: document.getElementById( 'fragmentshader' ).textContent,
shading: THREE.FlatShading
shading: THREE.FlatShading,
doubleSided: true
});
......@@ -211,7 +212,6 @@
mesh = new THREE.Mesh( geometry, shaderMaterial );
mesh.rotation.set( 0.5, 0.5, 0 );
mesh.doubleSided = true;
scene.add( mesh );
......
......@@ -115,12 +115,12 @@
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
uniforms: shader.uniforms,
depthWrite: false
depthWrite: false,
flipSided: true
} ),
mesh = new THREE.Mesh( new THREE.CubeGeometry( 100, 100, 100 ), material );
mesh.flipSided = true;
sceneCube.add( mesh );
// LIGHTS
......@@ -216,7 +216,6 @@
var mesh = new THREE.Mesh( geometries[ i ], materials[ i ] );
mesh.position = position;
mesh.scale = scale;
mesh.doubleSided = true;
scene.add( mesh );
}
......@@ -284,6 +283,8 @@
}
materials[ i ].doubleSided = true;
}
}
......@@ -302,7 +303,6 @@
mesh = new THREE.Mesh( geometry, material );
mesh.position.set( x, y, z );
mesh.scale.set( s, s, s );
mesh.doubleSided = true;
scene.add( mesh );
}
......
......@@ -80,7 +80,7 @@
camera.add( dirLight );
camera.add( dirLight.target );
var material = new THREE.MeshLambertMaterial( { color:0xffffff} );
var material = new THREE.MeshLambertMaterial( { color:0xffffff, doubleSided: true } );
var loader = new THREE.VTKLoader();
loader.addEventListener( 'load', function ( event ) {
......@@ -88,7 +88,6 @@
var geometry = event.content;
var mesh = new THREE.Mesh( geometry, material );
mesh.doubleSided = true;
mesh.position.setY( - 0.09 );
scene.add( mesh );
......
......@@ -200,12 +200,12 @@
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
uniforms: shader.uniforms,
depthWrite: false
depthWrite: false,
flipSided: true
} ),
mesh = new THREE.Mesh( new THREE.CubeGeometry( 100, 100, 100 ), material );
mesh.flipSided = true;
sceneCube.add( mesh );
//
......
......@@ -192,12 +192,12 @@
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
uniforms: shader.uniforms
uniforms: shader.uniforms,
flipSided: true
} ),
mesh = new THREE.Mesh( new THREE.CubeGeometry( 100000, 100000, 100000 ), material );
mesh.flipSided = true;
scene.add( mesh );
//
......
......@@ -193,12 +193,12 @@
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
uniforms: shader.uniforms
uniforms: shader.uniforms,
flipSided: true
} ),
mesh = new THREE.Mesh( new THREE.CubeGeometry( 100000, 100000, 100000 ), material );
mesh.flipSided = true;
scene.add( mesh );
//
......
......@@ -126,12 +126,12 @@
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
uniforms: shader.uniforms,
depthWrite: false
depthWrite: false,
flipSided: true
} ),
mesh = new THREE.Mesh( new THREE.CubeGeometry( 100, 100, 100 ), material );
mesh.flipSided = true;
sceneCube.add( mesh );
//
......
......@@ -120,12 +120,12 @@
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
uniforms: shader.uniforms,
depthWrite: false
depthWrite: false,
flipSided: true
} ),
mesh = new THREE.Mesh( new THREE.CubeGeometry( 100, 100, 100 ), material );
mesh.flipSided = true;
sceneCube.add( mesh );
//
......
......@@ -114,12 +114,12 @@
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
uniforms: shader.uniforms
uniforms: shader.uniforms,
flipSided: true
} ),
mesh = new THREE.Mesh( new THREE.CubeGeometry( 100000, 100000, 100000 ), material );
mesh.flipSided = true;
scene.add( mesh );
//
......
......@@ -117,12 +117,12 @@
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
uniforms: shader.uniforms,
depthWrite: false
depthWrite: false,
flipSided: true
} ),
mesh = new THREE.Mesh( new THREE.CubeGeometry( 100, 100, 100 ), material );
mesh.flipSided = true;
sceneCube.add( mesh );
//
......
......@@ -114,12 +114,12 @@
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
uniforms: shader.uniforms
uniforms: shader.uniforms,
flipSided: true
} ),
mesh = new THREE.Mesh( new THREE.CubeGeometry( 100000, 100000, 100000 ), material );
mesh.flipSided = true;
scene.add( mesh );
//
......
......@@ -94,12 +94,12 @@
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
uniforms: shader.uniforms
uniforms: shader.uniforms,
flipSided: true
} ),
mesh = new THREE.Mesh( new THREE.CubeGeometry( 6000, 6000, 6000 ), material );
mesh.flipSided = true;
scene.add( mesh );
//
......
......@@ -122,12 +122,12 @@
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
uniforms: shader.uniforms
uniforms: shader.uniforms,
flipSided: true
} ),
mesh = new THREE.Mesh( new THREE.CubeGeometry( 100000, 100000, 100000 ), material );
mesh.flipSided = true;
sceneCube.add( mesh );
//
......
......@@ -128,12 +128,12 @@
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
uniforms: shader.uniforms
uniforms: shader.uniforms,
flipSided: true
} ),
mesh = new THREE.Mesh( new THREE.CubeGeometry( 100000, 100000, 100000 ), material );
mesh.flipSided = true;
sceneCube.add( mesh );
//
......
......@@ -281,7 +281,6 @@
mesh = new THREE.Mesh( geometry, material );
mesh.position.y = - 50;
mesh.scale.set( scale, scale, scale );
mesh.doubleSided = true;
scene.add( mesh );
......@@ -289,7 +288,7 @@
}
function onDocumentMouseMove(event) {
function onDocumentMouseMove( event ) {
mouseX = ( event.clientX - windowHalfX );
mouseY = ( event.clientY - windowHalfY );
......
......@@ -81,13 +81,13 @@
var reflectionCube = THREE.ImageUtils.loadTextureCube( urls );
reflectionCube.format = THREE.RGBFormat;
var material = new THREE.MeshPhongMaterial( { specular: 0xffffff, shininess: 100, envMap: reflectionCube, combine: THREE.MixOperation, reflectivity: 0.1, perPixel: true } );
var material = new THREE.MeshPhongMaterial( { specular: 0xffffff, shininess: 100, envMap: reflectionCube, combine: THREE.MixOperation, reflectivity: 0.1, perPixel: true, doubleSided: true } );
material.wrapAround = true;
material.wrapRGB.set( 0.5, 0.5, 0.5 );
} else {
var material = new THREE.MeshPhongMaterial( { specular: 0xffffff, shading: THREE.SmoothShading, perPixel: true } );
var material = new THREE.MeshPhongMaterial( { specular: 0xffffff, shading: THREE.SmoothShading, perPixel: true, doubleSided: true } );
}
......@@ -108,8 +108,6 @@
mesh.matrixAutoUpdate = false;
mesh.updateMatrix();
mesh.doubleSided = true;
scene.add( mesh );
}
......
......@@ -125,7 +125,7 @@
for ( i = 0; i < xgrid; i ++ )
for ( j = 0; j < ygrid; j ++ ) {
materials[ c ] = new THREE.MeshBasicMaterial( { color: 0xffffff, vertexColors: true } );
materials[ c ] = new THREE.MeshBasicMaterial( { color: 0xffffff, vertexColors: true, doubleSided: true } );
ribbon = new THREE.Ribbon( i % 2 ? geometry : geometry2, materials[ c ] );
ribbon.rotation.x = 0;
......@@ -139,7 +139,6 @@
materials[c].color.setHSV( i / xgrid, 0.3 + 0.7 * j / ygrid, 1 );
ribbon.doubleSided = true;
ribbon.matrixAutoUpdate = false;
// manually create local matrix
......
......@@ -292,7 +292,7 @@
loader.load( "models/animated/sittingBox.js", function( geometry ) {
var morphMaterial = new THREE.MeshPhongMaterial( { ambient: 0x000000, color: 0x000000, specular: 0xff9900, shininess: 50, morphTargets: true, morphNormals: true } );
var morphMaterial = new THREE.MeshPhongMaterial( { ambient: 0x000000, color: 0x000000, specular: 0xff9900, shininess: 50, morphTargets: true, morphNormals: true, doubleSided: true } );
morphMaterial.shading = THREE.FlatShading;
geometry.computeMorphNormals();
......@@ -307,8 +307,6 @@
morph.castShadow = true;
morph.receiveShadow = true;
morph.doubleSided = true;
scene.add( morph );
} );
......
......@@ -20,9 +20,6 @@ THREE.Object3D = function () {
this.eulerOrder = 'XYZ';
this.scale = new THREE.Vector3( 1, 1, 1 );
this.doubleSided = false;
this.flipSided = false;
this.renderDepth = null;
this.rotationAutoUpdate = true;
......@@ -61,10 +58,10 @@ THREE.Object3D.prototype = {
this.matrix.multiply( matrix, this.matrix );
this.scale.getScaleFromMatrix( this.matrix );
var mat = new THREE.Matrix4().extractRotation( this.matrix );
this.rotation.setEulerFromRotationMatrix( mat, this.eulerOrder );
this.position.getPositionFromMatrix( this.matrix );
},
......
......@@ -148,9 +148,6 @@ THREE.SceneUtils = {
object.dynamic = source.dynamic;
object.doubleSided = source.doubleSided;
object.flipSided = source.flipSided;
object.renderDepth = source.renderDepth;
object.rotationAutoUpdate = source.rotationAutoUpdate;
......
......@@ -231,6 +231,18 @@ THREE.Loader.prototype = {
}
if ( m.doubleSided !== undefined ) {
mpars.doubleSided = m.doubleSided;
}
if ( m.flipSided !== undefined ) {
mpars.flipSided = m.flipSided;
}
if ( m.vertexColors !== undefined ) {
if ( m.vertexColors == "face" ) {
......
......@@ -211,7 +211,6 @@ THREE.SceneLoader.prototype.createScene = function ( json, callbackFinished, url
}
object.visible = o.visible;
object.doubleSided = o.doubleSided;
object.castShadow = o.castShadow;
object.receiveShadow = o.receiveShadow;
......
......@@ -33,6 +33,9 @@ THREE.Material = function ( parameters ) {
this.visible = parameters.visible !== undefined ? parameters.visible : true;
this.doubleSided = parameters.doubleSided !== undefined ? parameters.doubleSided : false;
this.flipSided = parameters.flipSided !== undefined ? parameters.flipSided : false;
this.needsUpdate = true;
}
......
......@@ -3962,7 +3962,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
_this.setObjectFaces( object );
_this.setMaterialFaces( material );
if ( buffer instanceof THREE.BufferGeometry ) {
......@@ -4023,7 +4023,7 @@ THREE.WebGLRenderer = function ( parameters ) {
_currentGeometryGroupHash = -1;
_this.setObjectFaces( object );
_this.setMaterialFaces( material );
if ( object.immediateRenderCallback ) {
......@@ -4677,7 +4677,7 @@ THREE.WebGLRenderer = function ( parameters ) {
metal: material.metal,
perPixel: material.perPixel,
wrapAround: material.wrapAround,
doubleSided: object && object.doubleSided
doubleSided: material.doubleSided
};
......@@ -5358,7 +5358,7 @@ THREE.WebGLRenderer = function ( parameters ) {
function setupMatrices ( object, camera ) {
object._modelViewMatrix.multiply( camera.matrixWorldInverse, object.matrixWorld);
object._modelViewMatrix.multiply( camera.matrixWorldInverse, object.matrixWorld );
object._normalMatrix.getInverse( object._modelViewMatrix );
object._normalMatrix.transpose();
......@@ -5577,11 +5577,11 @@ THREE.WebGLRenderer = function ( parameters ) {
};
this.setObjectFaces = function ( object ) {
this.setMaterialFaces = function ( material ) {
if ( _oldDoubleSided !== object.doubleSided ) {
if ( _oldDoubleSided !== material.doubleSided ) {
if ( object.doubleSided ) {
if ( material.doubleSided ) {
_gl.disable( _gl.CULL_FACE );
......@@ -5591,13 +5591,13 @@ THREE.WebGLRenderer = function ( parameters ) {
}
_oldDoubleSided = object.doubleSided;
_oldDoubleSided = material.doubleSided;
}
if ( _oldFlipSided !== object.flipSided ) {
if ( _oldFlipSided !== material.flipSided ) {
if ( object.flipSided ) {
if ( material.flipSided ) {
_gl.frontFace( _gl.CW );
......@@ -5607,7 +5607,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
_oldFlipSided = object.flipSided;
_oldFlipSided = material.flipSided;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册