SpotLight.html 5.9 KB
Newer Older
M
Mr.doob 已提交
1 2 3 4
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8" />
M
Mr.doob 已提交
5
		<base href="../../../" />
M
Mr.doob 已提交
6 7 8 9 10 11 12 13
		<script src="page.js"></script>
		<link type="text/css" rel="stylesheet" href="page.css" />
	</head>
	<body>
		[page:Object3D] &rarr; [page:Light] &rarr;

		<h1>[name]</h1>

14
		<p class="desc">
M
Mr.doob 已提交
15 16 17 18
			This light gets emitted from a single point in one direction, along a cone that increases in size
			the further from the light it gets. <br /><br />

			This light can cast shadows - see the [page:SpotLightShadow] page for details.
19
		</p>
M
Mr.doob 已提交
20 21 22 23 24

		<h2>Code Example</h2>
		<code>
		// white spotlight shining from the side, casting a shadow

M
Mugen87 已提交
25
		const spotLight = new THREE.SpotLight( 0xffffff );
M
Mr.doob 已提交
26 27 28 29 30 31 32 33 34 35 36 37 38 39
		spotLight.position.set( 100, 1000, 100 );

		spotLight.castShadow = true;

		spotLight.shadow.mapSize.width = 1024;
		spotLight.shadow.mapSize.height = 1024;

		spotLight.shadow.camera.near = 500;
		spotLight.shadow.camera.far = 4000;
		spotLight.shadow.camera.fov = 30;

		scene.add( spotLight );
		</code>

M
Mugen87 已提交
40 41 42 43 44 45 46
		<h2>Examples</h2>

		<p>
			[example:webgl_lights_spotlight lights / spotlight ]<br />
			[example:webgl_lights_spotlights lights / spotlights ]
		</p>

M
Mr.doob 已提交
47 48 49
		<h2>Constructor</h2>


50
		<h3>[name]( [param:Integer color], [param:Float intensity], [param:Float distance], [param:Radians angle], [param:Float penumbra], [param:Float decay] )</h3>
51
		<p>
M
Mr.doob 已提交
52 53
			[page:Integer color] - (optional) hexadecimal color of the light. Default is 0xffffff (white).<br />
			[page:Float intensity] - (optional) numeric value of the light's strength/intensity. Default is 1.<br /><br />
54
			[page:Float distance] - Maximum range of the light. Default is 0 (no limit).<br />
M
Mr.doob 已提交
55 56 57 58 59 60 61
			[page:Radians angle] - Maximum angle of light dispersion from its direction whose upper
			bound is Math.PI/2.<br />
			[page:Float penumbra] - Percent of the spotlight cone that is attenuated due to penumbra.
			Takes values between zero and 1. Default is zero.<br />
			[page:Float decay] - The amount the light dims along the distance of the light.<br /><br />

			Creates a new [name].
62
		</p>
M
Mr.doob 已提交
63 64 65

		<h2>Properties</h2>

M
Mugen87 已提交
66
		<p>See the base [page:Light Light] class for common properties.</p>
M
Mr.doob 已提交
67 68

		<h3>[property:Float angle]</h3>
69
		<p>
M
Mr.doob 已提交
70 71
			Maximum extent of the spotlight, in radians, from its direction. Should be no more than
			*Math.PI/2*. The default is *Math.PI/3*.
72
		</p>
M
Mr.doob 已提交
73 74 75


		<h3>[property:Boolean castShadow]</h3>
76
		<p>
M
Mr.doob 已提交
77 78 79
			If set to *true* light will cast dynamic shadows. *Warning*: This is expensive and
			requires tweaking to get shadows looking right. See the [page:SpotLightShadow] for details.
			The default is *false*.
80
		</p>
M
Mr.doob 已提交
81 82

		<h3>[property:Float decay]</h3>
83
		<p>
M
Mr.doob 已提交
84 85 86
			The amount the light dims along the distance of the light.<br />
			In [page:WebGLRenderer.physicallyCorrectLights physically correct] mode, decay = 2 leads to
			physically realistic light falloff. The default is *1*.
87
		</p>
M
Mr.doob 已提交
88 89

		<h3>[property:Float distance]</h3>
90
		<p>
91 92 93 94 95 96 97
			<em>Default mode</em> — When distance is zero, light does not attenuate. When distance is
			non-zero, light will attenuate linearly from maximum intensity at the light's position down to
			zero at this distance from the light.
		</p>
		<p>
			<em>[page:WebGLRenderer.physicallyCorrectLights Physically correct] mode</em> — When distance
			is zero, light will attenuate according to inverse-square law to infinite distance. When
98 99 100
			distance is non-zero, light will attenuate according to inverse-square law until near the
			distance cutoff, where it will then attenuate quickly and smoothly to 0. Inherently, cutoffs
			are not physically correct.
101 102 103
		</p>
		<p>
			Default is *0.0*.
104
		</p>
M
Mr.doob 已提交
105

106 107 108 109 110 111 112 113 114 115
		<h3>[property:Float intensity]</h3>
		<p>
			The light's intensity. Default is *1*. <br />
			In [page:WebGLRenderer.physicallyCorrectLights physically correct] mode, intensity is the luminous
			intensity of the light measured in candela (cd).<br /><br />

			Changing the power will also change the light's intensity.

		</p>

M
Mr.doob 已提交
116
		<h3>[property:Float penumbra]</h3>
117
		<p>
M
Mr.doob 已提交
118 119
			Percent of the spotlight cone that is attenuated due to penumbra. Takes values between
			zero and 1. The default is *0.0*.
120
		</p>
M
Mr.doob 已提交
121 122

		<h3>[property:Vector3 position]</h3>
123
		<p>
M
Mr.doob 已提交
124
			This is set equal to [page:Object3D.DefaultUp] (0, 1, 0), so that the light shines from the top down.
125
		</p>
M
Mr.doob 已提交
126 127

		<h3>[property:Float power]</h3>
128
		<p>
M
Mr.doob 已提交
129
			The light's power.<br />
130 131
			In [page:WebGLRenderer.physicallyCorrectLights physically correct] mode, power is the luminous
			power of the light measured in lumens (lm). <br /><br />
M
Mr.doob 已提交
132

133
			Changing this will also change the light's intensity.
134
		</p>
M
Mr.doob 已提交
135

136

M
Mr.doob 已提交
137
		<h3>[property:SpotLightShadow shadow]</h3>
138
		<p>
M
Mr.doob 已提交
139
			A [page:SpotLightShadow] used to calculate shadows for this light.
140
		</p>
M
Mr.doob 已提交
141 142 143


		<h3>[property:Object3D target]</h3>
144
		<p>
M
Mr.doob 已提交
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
			The Spotlight points from its [page:.position position] to target.position. The default
			position of the target is *(0, 0, 0)*.<br />

			*Note*: For the target's position to be changed to anything other than the default,
			it must be added to the [page:Scene scene] using
			<code>
				scene.add( light.target );
			</code>

			This is so that the target's [page:Object3D.matrixWorld matrixWorld] gets automatically
			updated each frame.<br /><br />

			It is also possible to set the target to be another object in the scene (anything with a
			[page:Object3D.position position] property), like so:
			<code>
M
Mugen87 已提交
160
const targetObject = new THREE.Object3D();
M
Mr.doob 已提交
161 162 163 164 165
scene.add(targetObject);

light.target = targetObject;
			</code>
			The spotlight will now track the target object.
166
		</p>
M
Mr.doob 已提交
167 168 169 170


		<h2>Methods</h2>

M
Mugen87 已提交
171
		<p>See the base [page:Light Light] class for common methods.</p>
M
Mr.doob 已提交
172

173
		<h3>[method:undefined dispose]()</h3>
174 175 176 177 178
		<p>
		Override of base class's [page:Light.dispose dispose].
		Disposes of this light's [page:SpotLightShadow shadow].
		</p>

179
		<h3>[method:SpotLight copy]( [param:SpotLight source] )</h3>
180
		<p>
M
Mr.doob 已提交
181 182
		Copies value of all the properties from the [page:SpotLight source] to this
		SpotLight.
183
		</p>
M
Mr.doob 已提交
184

M
Mugen87 已提交
185 186 187
		<p>
			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
		</p>
M
Mr.doob 已提交
188 189
	</body>
</html>