未验证 提交 33c5c3df 编写于 作者: M Mr.doob 提交者: GitHub

Merge pull request #14451 from 06wj/patch0

GLTFLoader: Update KHR_lights_punctual and fix light has no color bug
......@@ -31,7 +31,7 @@
<li>KHR_draco_mesh_compression</li>
<li>KHR_materials_pbrSpecularGlossiness</li>
<li>KHR_materials_unlit</li>
<li>KHR_lights (experimental)</li>
<li>KHR_lights_punctual (experimental)</li>
</ul>
<h2>Example</h2>
......
......@@ -130,7 +130,7 @@ THREE.GLTFLoader = ( function () {
switch ( extensionName ) {
case EXTENSIONS.KHR_LIGHTS:
case EXTENSIONS.KHR_LIGHTS_PUNCTUAL:
extensions[ extensionName ] = new GLTFLightsExtension( json );
break;
......@@ -237,7 +237,7 @@ THREE.GLTFLoader = ( function () {
var EXTENSIONS = {
KHR_BINARY_GLTF: 'KHR_binary_glTF',
KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',
KHR_LIGHTS: 'KHR_lights',
KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',
KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',
KHR_MATERIALS_UNLIT: 'KHR_materials_unlit',
MSFT_TEXTURE_DDS: 'MSFT_texture_dds'
......@@ -270,11 +270,11 @@ THREE.GLTFLoader = ( function () {
*/
function GLTFLightsExtension( json ) {
this.name = EXTENSIONS.KHR_LIGHTS;
this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;
this.lights = {};
var extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS ] ) || {};
var extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] ) || {};
var lights = extension.lights || {};
for ( var lightId in lights ) {
......@@ -282,7 +282,16 @@ THREE.GLTFLoader = ( function () {
var light = lights[ lightId ];
var lightNode;
var color = new THREE.Color().fromArray( light.color );
// the color default value is [1, 1, 1]
var color = new THREE.Color( 0xffffff );
if ( light.color !== undefined ) {
color.fromArray( light.color )
}
var range = 0;
if ( light.range !== undefined ) {
range = light.range;
}
switch ( light.type ) {
......@@ -294,10 +303,12 @@ THREE.GLTFLoader = ( function () {
case 'point':
lightNode = new THREE.PointLight( color );
lightNode.distance = range;
break;
case 'spot':
lightNode = new THREE.SpotLight( color );
lightNode.distance = range;
// Handle spotlight properties.
light.spot = light.spot || {};
light.spot.innerConeAngle = light.spot.innerConeAngle !== undefined ? light.spot.innerConeAngle : 0;
......@@ -308,10 +319,6 @@ THREE.GLTFLoader = ( function () {
lightNode.add( lightNode.target );
break;
case 'ambient':
lightNode = new THREE.AmbientLight( color );
break;
}
if ( lightNode ) {
......@@ -2956,11 +2963,11 @@ THREE.GLTFLoader = ( function () {
node = dependencies.cameras[ nodeDef.camera ];
} else if ( nodeDef.extensions
&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS ]
&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS ].light !== undefined ) {
&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ]
&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) {
var lights = extensions[ EXTENSIONS.KHR_LIGHTS ].lights;
node = lights[ nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS ].light ];
var lights = extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].lights;
node = lights[ nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light ];
} else {
......@@ -3120,16 +3127,6 @@ THREE.GLTFLoader = ( function () {
}
// Ambient lighting, if present, is always attached to the scene root.
if ( sceneDef.extensions
&& sceneDef.extensions[ EXTENSIONS.KHR_LIGHTS ]
&& sceneDef.extensions[ EXTENSIONS.KHR_LIGHTS ].light !== undefined ) {
var lights = extensions[ EXTENSIONS.KHR_LIGHTS ].lights;
scene.add( lights[ sceneDef.extensions[ EXTENSIONS.KHR_LIGHTS ].light ] );
}
return scene;
} );
......
{
"asset": {
"generator": "COLLADA2GLTF with manual modifications for KHR_lights",
"generator": "COLLADA2GLTF with manual modifications for KHR_lights_punctual",
"version": "2.0"
},
"scene": 0,
......@@ -727,7 +727,7 @@
},
{
"extensions": {
"KHR_lights": {
"KHR_lights_punctual": {
"light": 0
}
},
......@@ -735,7 +735,7 @@
},
{
"extensions": {
"KHR_lights": {
"KHR_lights_punctual": {
"light": 1
}
},
......@@ -761,7 +761,7 @@
},
{
"extensions": {
"KHR_lights": {
"KHR_lights_punctual": {
"light": 2
}
},
......@@ -4523,10 +4523,10 @@
}
],
"extensionsUsed": [
"KHR_lights"
"KHR_lights_punctual"
],
"extensions": {
"KHR_lights": {
"KHR_lights_punctual": {
"lights": [
{
"type": "point",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册