Update three.js to version 0.151.3.

This commit is contained in:
kovacsv 2023-04-15 20:56:52 +02:00
parent ef3817c998
commit 63bc9333c2
8 changed files with 50 additions and 18 deletions

14
package-lock.json generated
View File

@ -15,7 +15,7 @@
"fflate": "0.7.4",
"occt-import-js": "0.0.18",
"rhino3dm": "8.0.0",
"three": "0.150.1",
"three": "0.151.3",
"web-ifc": "0.0.35"
},
"devDependencies": {
@ -5190,9 +5190,9 @@
"dev": true
},
"node_modules/three": {
"version": "0.150.1",
"resolved": "https://registry.npmjs.org/three/-/three-0.150.1.tgz",
"integrity": "sha512-5C1MqKUWaHYo13BX0Q64qcdwImgnnjSOFgBscOzAo8MYCzEtqfQqorEKMcajnA3FHy1yVlIe9AmaMQ0OQracNA=="
"version": "0.151.3",
"resolved": "https://registry.npmjs.org/three/-/three-0.151.3.tgz",
"integrity": "sha512-+vbuqxFy8kzLeO5MgpBHUvP/EAiecaDwDuOPPDe6SbrZr96kccF0ktLngXc7xA7bzyd3N0t2f6mw3Z9y6JCojQ=="
},
"node_modules/timers-ext": {
"version": "0.1.7",
@ -9502,9 +9502,9 @@
"dev": true
},
"three": {
"version": "0.150.1",
"resolved": "https://registry.npmjs.org/three/-/three-0.150.1.tgz",
"integrity": "sha512-5C1MqKUWaHYo13BX0Q64qcdwImgnnjSOFgBscOzAo8MYCzEtqfQqorEKMcajnA3FHy1yVlIe9AmaMQ0OQracNA=="
"version": "0.151.3",
"resolved": "https://registry.npmjs.org/three/-/three-0.151.3.tgz",
"integrity": "sha512-+vbuqxFy8kzLeO5MgpBHUvP/EAiecaDwDuOPPDe6SbrZr96kccF0ktLngXc7xA7bzyd3N0t2f6mw3Z9y6JCojQ=="
},
"timers-ext": {
"version": "0.1.7",

View File

@ -80,7 +80,7 @@
"fflate": "0.7.4",
"occt-import-js": "0.0.18",
"rhino3dm": "8.0.0",
"three": "0.150.1",
"three": "0.151.3",
"web-ifc": "0.0.35"
},
"eslintConfig": {

View File

@ -189,7 +189,7 @@ export class Importer3dm extends ImporterBase
let materialIndex = this.GetMaterialIndex (rhinoDoc, rhinoObject, rhinoInstanceReferences);
let threeJson = rhinoMesh.toThreejsJSON ();
let mesh = ConvertThreeGeometryToMesh (threeJson.data, materialIndex);
let mesh = ConvertThreeGeometryToMesh (threeJson.data, materialIndex, null);
mesh.SetName (rhinoAttributes.name);
let userStrings = rhinoAttributes.getUserStrings ();

View File

@ -403,7 +403,7 @@ export class ImporterFcstd extends ImporterBase
object.color.a
);
}
let mesh = ConvertThreeGeometryToMesh (resultMesh, materialIndex);
let mesh = ConvertThreeGeometryToMesh (resultMesh, materialIndex, null);
if (object.shapeName !== null) {
let indexString = objectMeshIndex.toString ().padStart (3, '0');
mesh.SetName (object.shapeName + ' ' + indexString);

View File

@ -104,7 +104,7 @@ export class ImporterOcct extends ImporterBase
let color = RGBColorFromFloatComponents (occtMesh.color[0], occtMesh.color[1], occtMesh.color[2]);
materialIndex = colorToMaterial.GetMaterialIndex (color.r, color.g, color.b, null);
}
let mesh = ConvertThreeGeometryToMesh (occtMesh, materialIndex);
let mesh = ConvertThreeGeometryToMesh (occtMesh, materialIndex, null);
if (occtMesh.name) {
mesh.SetName (occtMesh.name);
}

View File

@ -6,7 +6,7 @@ import { Base64DataURIToArrayBuffer, CreateObjectUrl, GetFileExtensionFromMimeTy
import { GetFileExtension, GetFileName } from '../io/fileutils.js';
import { PhongMaterial, TextureMap } from '../model/material.js';
import { Node, NodeType } from '../model/node.js';
import { ConvertThreeColorToColor, ConvertThreeGeometryToMesh } from '../threejs/threeutils.js';
import { ConvertThreeColorToColor, ConvertThreeGeometryToMesh, ThreeLinearToSRGBColorConverter } from '../threejs/threeutils.js';
import { ImporterBase } from './importerbase.js';
import * as THREE from 'three';
@ -21,6 +21,8 @@ export class ImporterThreeBase extends ImporterBase
constructor ()
{
super ();
this.colorConverter = null;
}
CreateLoader (manager)
@ -155,7 +157,7 @@ export class ImporterThreeBase extends ImporterBase
{
let mesh = null;
if (Array.isArray (threeMesh.material)) {
mesh = ConvertThreeGeometryToMesh (threeMesh.geometry, null);
mesh = ConvertThreeGeometryToMesh (threeMesh.geometry, null, this.colorConverter);
if (threeMesh.geometry.attributes.color === undefined || threeMesh.geometry.attributes.color === null) {
let materialIndices = [];
for (let i = 0; i < threeMesh.material.length; i++) {
@ -179,7 +181,7 @@ export class ImporterThreeBase extends ImporterBase
}
} else {
const materialIndex = this.FindOrCreateMaterial (threeMesh.material);
mesh = ConvertThreeGeometryToMesh (threeMesh.geometry, materialIndex);
mesh = ConvertThreeGeometryToMesh (threeMesh.geometry, materialIndex, this.colorConverter);
}
if (threeMesh.name !== undefined && threeMesh.name !== null) {
mesh.SetName (threeMesh.name);
@ -252,12 +254,12 @@ export class ImporterThreeBase extends ImporterBase
let material = new PhongMaterial ();
material.name = threeMaterial.name;
material.color = ConvertThreeColorToColor (threeMaterial.color);
material.color = this.ConvertThreeColor (threeMaterial.color);
material.opacity = threeMaterial.opacity;
material.transparent = threeMaterial.transparent;
material.alphaTest = threeMaterial.alphaTest;
if (threeMaterial.type === 'MeshPhongMaterial') {
material.specular = ConvertThreeColorToColor (threeMaterial.specular);
material.specular = this.ConvertThreeColor (threeMaterial.specular);
material.shininess = threeMaterial.shininess / 100.0;
}
material.diffuseMap = CreateTexture (threeMaterial.map, this.objectUrlToFileName);
@ -266,6 +268,14 @@ export class ImporterThreeBase extends ImporterBase
return material;
}
ConvertThreeColor (threeColor)
{
if (this.colorConverter !== null) {
threeColor = this.colorConverter.Convert (threeColor);
}
return ConvertThreeColorToColor (threeColor);
}
}
export class ImporterThreeFbx extends ImporterThreeBase
@ -273,6 +283,7 @@ export class ImporterThreeFbx extends ImporterThreeBase
constructor ()
{
super ();
this.colorConverter = new ThreeLinearToSRGBColorConverter ();
}
CanImportExtension (extension)

View File

@ -63,7 +63,7 @@ import { Triangle } from './model/triangle.js';
import { ParameterListBuilder, ParameterListParser, CreateUrlBuilder, CreateUrlParser, CreateModelUrlParameters, ParameterConverter } from './parameters/parameterlist.js';
import { ModelToThreeConversionParams, ModelToThreeConversionOutput, ThreeConversionStateHandler, ThreeNodeTree, ConvertModelToThreeObject } from './threejs/threeconverter.js';
import { ThreeModelLoader } from './threejs/threemodelloader.js';
import { HasHighpDriverIssue, GetShadingType, ConvertThreeColorToColor, ConvertColorToThreeColor, ConvertThreeGeometryToMesh, DisposeThreeObjects, ShadingType } from './threejs/threeutils.js';
import { ThreeColorConverter, ThreeLinearToSRGBColorConverter, HasHighpDriverIssue, GetShadingType, ConvertThreeColorToColor, ConvertColorToThreeColor, ConvertThreeGeometryToMesh, DisposeThreeObjects, ShadingType } from './threejs/threeutils.js';
import { Camera, CameraIsEqual3D, CameraMode } from './viewer/camera.js';
import { GetIntegerFromStyle, GetDomElementExternalWidth, GetDomElementExternalHeight, GetDomElementInnerDimensions, GetDomElementClientCoordinates, CreateDomElement, AddDomElement, AddDiv, ClearDomElement, InsertDomElementBefore, InsertDomElementAfter, ShowDomElement, IsDomElementVisible, SetDomElementWidth, SetDomElementHeight, GetDomElementOuterWidth, GetDomElementOuterHeight, SetDomElementOuterWidth, SetDomElementOuterHeight, CreateDiv } from './viewer/domutils.js';
import { EmbeddedViewer, Init3DViewerFromUrlList, Init3DViewerFromFileList, Init3DViewerElements } from './viewer/embeddedviewer.js';
@ -282,6 +282,8 @@ export {
ThreeNodeTree,
ConvertModelToThreeObject,
ThreeModelLoader,
ThreeColorConverter,
ThreeLinearToSRGBColorConverter,
HasHighpDriverIssue,
GetShadingType,
ConvertThreeColorToColor,

View File

@ -89,6 +89,22 @@ export function GetShadingType (model)
}
}
export class ThreeColorConverter
{
Convert (color)
{
return null;
}
}
export class ThreeLinearToSRGBColorConverter extends ThreeColorConverter
{
Convert (color)
{
return new THREE.Color ().copyLinearToSRGB (color);
}
}
export function ConvertThreeColorToColor (threeColor)
{
return RGBColorFromFloatComponents (threeColor.r, threeColor.g, threeColor.b);
@ -103,7 +119,7 @@ export function ConvertColorToThreeColor (color)
);
}
export function ConvertThreeGeometryToMesh (threeGeometry, materialIndex)
export function ConvertThreeGeometryToMesh (threeGeometry, materialIndex, colorConverter)
{
let mesh = new Mesh ();
@ -122,6 +138,9 @@ export function ConvertThreeGeometryToMesh (threeGeometry, materialIndex)
let colorItemSize = threeGeometry.attributes.color.itemSize || 3;
for (let i = 0; i < colors.length; i += colorItemSize) {
let threeColor = new THREE.Color (colors[i], colors[i + 1], colors[i + 2]);
if (colorConverter !== null) {
threeColor = colorConverter.Convert (threeColor);
}
mesh.AddVertexColor (ConvertThreeColorToColor (threeColor));
}
}