MeshPhongMaterial.js 3.3 KB
Newer Older
1
/**
2
 * @author mr.doob / http://mrdoob.com/
3
 * @author alteredq / http://alteredqualia.com/
M
Mr.doob 已提交
4 5 6
 *
 * parameters = {
 *  color: <hex>,
M
Mr.doob 已提交
7
 *  ambient: <hex>,
M
Mr.doob 已提交
8
 *  specular: <hex>,
M
Mr.doob 已提交
9 10
 *  shininess: <float>,

11 12
 *  map: new THREE.Texture( <Image> ),
 *  specular_map: new THREE.Texture( <Image> ),
M
Mr.doob 已提交
13

14
 *  env_map: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),
M
Mr.doob 已提交
15
 *  combine: THREE.Multiply,
16
 *  reflectivity: <float>,
M
Mr.doob 已提交
17 18
 *  refraction_ratio: <float>,

M
Mr.doob 已提交
19
 *  opacity: <float>,
20
 *  shading: THREE.SmoothShading,
21
 *  blending: THREE.NormalBlending,
M
Mr.doob 已提交
22 23
 *  wireframe: <boolean>,
 *  wireframe_linewidth: <float>
24
 * }
25 26
 */

M
Mr.doob 已提交
27
THREE.MeshPhongMaterial = function ( parameters ) {
28

29
	this.id = THREE.MeshPhongMaterialCounter.value ++;
30

M
Mr.doob 已提交
31
	this.color = new THREE.Color( 0xeeeeee );
M
Mr.doob 已提交
32 33
	this.ambient = new THREE.Color( 0x050505 );
	this.specular = new THREE.Color( 0x111111 );
M
Mr.doob 已提交
34 35 36
	this.shininess = 30;
	
	this.map = null;
M
Mr.doob 已提交
37
	this.specular_map = null;
M
Mr.doob 已提交
38
	
39
	this.env_map = null;
M
Mr.doob 已提交
40
	this.combine = THREE.Multiply;
41
	this.reflectivity = 1;
M
Mr.doob 已提交
42 43
	this.refraction_ratio = 0.98;
	
M
Mr.doob 已提交
44
	this.opacity = 1;
45
	this.shading = THREE.SmoothShading;
M
Mr.doob 已提交
46 47 48
	this.blending = THREE.NormalBlending;
	this.wireframe = false;
	this.wireframe_linewidth = 1;
49

M
Mr.doob 已提交
50
	if ( parameters ) {
51

M
Mr.doob 已提交
52 53
		if ( parameters.color !== undefined ) this.color = new THREE.Color( parameters.color );
		if ( parameters.ambient !== undefined ) this.ambient = new THREE.Color( parameters.ambient );
M
Mr.doob 已提交
54
		if ( parameters.specular !== undefined ) this.specular = new THREE.Color( parameters.specular );
M
Mr.doob 已提交
55 56 57
		if ( parameters.shininess !== undefined ) this.shininess = parameters.shininess;
		
		if ( parameters.map !== undefined ) this.map = parameters.map;
M
Mr.doob 已提交
58
		if ( parameters.specular_map !== undefined ) this.specular_map = parameters.specular_map;
M
Mr.doob 已提交
59
		
60
		if ( parameters.env_map !== undefined ) this.env_map = parameters.env_map;
M
Mr.doob 已提交
61
		if ( parameters.combine !== undefined ) this.combine = parameters.combine;
62
		if ( parameters.reflectivity !== undefined ) this.reflectivity  = parameters.reflectivity;
M
Mr.doob 已提交
63 64
		if ( parameters.refraction_ratio !== undefined ) this.refraction_ratio  = parameters.refraction_ratio;
		
M
Mr.doob 已提交
65 66 67 68 69
		if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity;
		if ( parameters.shading !== undefined ) this.shading = parameters.shading;
		if ( parameters.blending !== undefined ) this.blending = parameters.blending;
		if ( parameters.wireframe !== undefined ) this.wireframe = parameters.wireframe;
		if ( parameters.wireframe_linewidth !== undefined ) this.wireframe_linewidth = parameters.wireframe_linewidth;
70

71
	}
M
Mr.doob 已提交
72 73 74 75 76 77 78 79 80

	this.toString = function () {

		return 'THREE.MeshPhongMaterial (<br/>' +
			'id: ' + this.id + '<br/>' +
			'color: ' + this.color + '<br/>' +
			'ambient: ' + this.ambient + '<br/>' +
			'specular: ' + this.specular + '<br/>' +
			'shininess: ' + this.shininess + '<br/>' +
M
Mr.doob 已提交
81 82 83 84 85 86
		
			'map: ' + this.map + '<br/>' +
			'specular_map: ' + this.specular_map + '<br/>' +
		
			'env_map: ' + this.env_map + '<br/>' +
			'combine: ' + this.combine + '<br/>' +
87
			'reflectivity: ' + this.reflectivity + '<br/>' +
M
Mr.doob 已提交
88 89
			'refraction_ratio: ' + this.refraction_ratio + '<br/>' +
		
90
			'opacity: ' + this.opacity + '<br/>' +
M
Mr.doob 已提交
91 92 93 94 95 96 97
			'shading: ' + this.shading + '<br/>' +
			'wireframe: ' + this.wireframe + '<br/>' +
			'wireframe_linewidth: ' + this.wireframe_linewidth + '<br/>' +
			+ ')';

	};

98 99
};

100
THREE.MeshPhongMaterialCounter = { value: 0 };