@needle-tools/engine 3.27.5-beta → 3.28.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/needle-engine.js +4692 -4719
- package/dist/needle-engine.light.js +4434 -4461
- package/dist/needle-engine.light.min.js +226 -219
- package/dist/needle-engine.light.umd.cjs +283 -276
- package/dist/needle-engine.min.js +228 -221
- package/dist/needle-engine.umd.cjs +238 -231
- package/lib/engine/engine_shims.js +0 -1
- package/lib/engine/engine_shims.js.map +1 -1
- package/lib/engine-components/Renderer.js +12 -0
- package/lib/engine-components/Renderer.js.map +1 -1
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.d.ts +14 -5
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.js +26 -15
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.js.map +1 -1
- package/package.json +1 -1
- package/src/engine/codegen/register_types.ts +2 -2
- package/src/engine/engine_shims.ts +0 -2
- package/src/engine-components/Renderer.ts +13 -0
- package/src/engine-components/export/usdz/ThreeUSDZExporter.ts +36 -24
- package/src/engine/dist/api.js +0 -73
- package/src/engine/dist/api.js.meta +0 -7
- package/src/engine/dist/engine_networking_streams.js +0 -474
- package/src/engine/dist/engine_networking_streams.js.meta +0 -7
- package/src/engine-components/dist/AudioSource.js +0 -513
- package/src/engine-components/dist/AudioSource.js.meta +0 -7
- package/src/engine-components/dist/ScreenCapture.js +0 -490
- package/src/engine-components/dist/ScreenCapture.js.meta +0 -7
- package/src/engine-components/dist/VideoPlayer.js +0 -888
- package/src/engine-components/dist/VideoPlayer.js.meta +0 -7
- package/src/engine-components/dist/Voip2.js +0 -46
- package/src/engine-components/dist/Voip2.js.meta +0 -7
- package/src/engine-schemes/dist/api.js +0 -17
- package/src/engine-schemes/dist/api.js.meta +0 -7
- package/src/engine-schemes/dist/schemes.js +0 -25
- package/src/engine-schemes/dist/schemes.js.meta +0 -7
- package/src/engine-schemes/dist/synced-camera-model.js +0 -74
- package/src/engine-schemes/dist/synced-camera-model.js.meta +0 -7
- package/src/engine-schemes/dist/synced-transform-model.js +0 -73
- package/src/engine-schemes/dist/synced-transform-model.js.meta +0 -7
- package/src/engine-schemes/dist/transform.js +0 -46
- package/src/engine-schemes/dist/transform.js.meta +0 -7
- package/src/engine-schemes/dist/vec2.js +0 -32
- package/src/engine-schemes/dist/vec2.js.meta +0 -7
- package/src/engine-schemes/dist/vec3.js +0 -36
- package/src/engine-schemes/dist/vec3.js.meta +0 -7
- package/src/engine-schemes/dist/vec4.js +0 -40
- package/src/engine-schemes/dist/vec4.js.meta +0 -7
- package/src/engine-schemes/dist/vr-user-state-buffer.js +0 -110
- package/src/engine-schemes/dist/vr-user-state-buffer.js.meta +0 -7
- package/src/engine-schemes/flatc.exe +0 -0
|
@@ -26,7 +26,8 @@ import {
|
|
|
26
26
|
SRGBColorSpace,
|
|
27
27
|
AnimationClip,
|
|
28
28
|
OrthographicCamera,
|
|
29
|
-
BufferAttribute
|
|
29
|
+
BufferAttribute,
|
|
30
|
+
Vector4
|
|
30
31
|
} from 'three';
|
|
31
32
|
import * as fflate from 'three/examples/jsm/libs/fflate.module.js';
|
|
32
33
|
|
|
@@ -428,13 +429,15 @@ class USDWriter {
|
|
|
428
429
|
|
|
429
430
|
}
|
|
430
431
|
|
|
432
|
+
declare type TextureMap = {[name: string]: {texture: Texture, scale?: Vector4}};
|
|
433
|
+
|
|
431
434
|
class USDZExporterContext {
|
|
432
435
|
root: any;
|
|
433
436
|
exporter: any;
|
|
434
437
|
extensions: any;
|
|
435
|
-
materials:
|
|
436
|
-
textures:
|
|
437
|
-
files: {}
|
|
438
|
+
materials: Map<string, Material>;
|
|
439
|
+
textures: TextureMap;
|
|
440
|
+
files: { [path: string]: Uint8Array | [Uint8Array, fflate.ZipOptions] | null | any }
|
|
438
441
|
document: USDDocument;
|
|
439
442
|
output: string;
|
|
440
443
|
animations: AnimationClip[];
|
|
@@ -447,7 +450,7 @@ class USDZExporterContext {
|
|
|
447
450
|
if ( extensions )
|
|
448
451
|
this.extensions = extensions;
|
|
449
452
|
|
|
450
|
-
this.materials =
|
|
453
|
+
this.materials = new Map();
|
|
451
454
|
this.textures = {};
|
|
452
455
|
this.files = {};
|
|
453
456
|
this.document = new USDDocument();
|
|
@@ -578,18 +581,19 @@ class USDZExporter {
|
|
|
578
581
|
|
|
579
582
|
for ( const id in textures ) {
|
|
580
583
|
|
|
581
|
-
|
|
584
|
+
const textureData = textures[ id ];
|
|
585
|
+
let texture = textureData.texture;
|
|
582
586
|
|
|
583
587
|
const isRGBA = formatsWithAlphaChannel.includes( texture.format );
|
|
584
588
|
|
|
589
|
+
//@ts-ignore
|
|
585
590
|
if ( texture.isCompressedTexture || texture.isRenderTargetTexture ) {
|
|
586
591
|
|
|
587
592
|
texture = decompressGpuTexture( texture, options.maxTextureSize, decompressionRenderer );
|
|
588
593
|
|
|
589
594
|
}
|
|
590
595
|
|
|
591
|
-
|
|
592
|
-
const canvas = await imageToCanvas( texture.image ).catch( err => {
|
|
596
|
+
const canvas = await imageToCanvas( texture.image, textureData.scale, false, options.maxTextureSize ).catch( err => {
|
|
593
597
|
console.error("Error converting texture to canvas", texture, err);
|
|
594
598
|
});
|
|
595
599
|
|
|
@@ -869,6 +873,7 @@ function decompressGpuTexture( texture, maxTextureSize = Infinity, renderer: Web
|
|
|
869
873
|
#else
|
|
870
874
|
gl_FragColor = texture2D( blitTexture, vUv);
|
|
871
875
|
#endif
|
|
876
|
+
gl_FragColor.rgb *= gl_FragColor.a;
|
|
872
877
|
}`
|
|
873
878
|
} );
|
|
874
879
|
|
|
@@ -926,7 +931,7 @@ function isImageBitmap( image ) {
|
|
|
926
931
|
|
|
927
932
|
}
|
|
928
933
|
|
|
929
|
-
async function imageToCanvas( image, color:
|
|
934
|
+
async function imageToCanvas( image, color: Vector4 | undefined = undefined, flipY = false, maxTextureSize = 4096 ) {
|
|
930
935
|
|
|
931
936
|
if ( isImageBitmap( image ) ) {
|
|
932
937
|
|
|
@@ -947,14 +952,13 @@ async function imageToCanvas( image, color: string | undefined = undefined, flip
|
|
|
947
952
|
|
|
948
953
|
context.drawImage( image, 0, 0, canvas.width, canvas.height );
|
|
949
954
|
|
|
950
|
-
//
|
|
955
|
+
// Currently only used to apply opacity scale since QuickLook and usdview don't support that yet
|
|
951
956
|
if ( color !== undefined ) {
|
|
952
957
|
|
|
953
|
-
const
|
|
954
|
-
|
|
955
|
-
const
|
|
956
|
-
const
|
|
957
|
-
const b = ( hex & 255 ) / 255;
|
|
958
|
+
const r = color.x;
|
|
959
|
+
const g = color.y;
|
|
960
|
+
const b = color.z;
|
|
961
|
+
const a = color.w;
|
|
958
962
|
|
|
959
963
|
const imagedata = context.getImageData( 0, 0, canvas.width, canvas.height );
|
|
960
964
|
const data = imagedata.data;
|
|
@@ -964,6 +968,7 @@ async function imageToCanvas( image, color: string | undefined = undefined, flip
|
|
|
964
968
|
data[ i + 0 ] = data[ i + 0 ] * r;
|
|
965
969
|
data[ i + 1 ] = data[ i + 1 ] * g;
|
|
966
970
|
data[ i + 2 ] = data[ i + 2 ] * b;
|
|
971
|
+
data[ i + 3 ] = data[ i + 3 ] * a;
|
|
967
972
|
|
|
968
973
|
}
|
|
969
974
|
|
|
@@ -1371,7 +1376,7 @@ function buildVector2Array( attribute, count ) {
|
|
|
1371
1376
|
|
|
1372
1377
|
// Materials
|
|
1373
1378
|
|
|
1374
|
-
function buildMaterials( materials, textures, quickLookCompatible = false ) {
|
|
1379
|
+
function buildMaterials( materials: Map<string, Material>, textures: TextureMap, quickLookCompatible = false ) {
|
|
1375
1380
|
|
|
1376
1381
|
const array: Array<string> = [];
|
|
1377
1382
|
|
|
@@ -1392,7 +1397,7 @@ ${array.join( '' )}
|
|
|
1392
1397
|
|
|
1393
1398
|
}
|
|
1394
1399
|
|
|
1395
|
-
function buildMaterial( material: MeshBasicMaterial, textures, quickLookCompatible = false ) {
|
|
1400
|
+
function buildMaterial( material: MeshBasicMaterial, textures: TextureMap, quickLookCompatible = false ) {
|
|
1396
1401
|
|
|
1397
1402
|
// https://graphics.pixar.com/usd/docs/UsdPreviewSurface-Proposal.html
|
|
1398
1403
|
|
|
@@ -1404,7 +1409,11 @@ function buildMaterial( material: MeshBasicMaterial, textures, quickLookCompatib
|
|
|
1404
1409
|
|
|
1405
1410
|
const id = texture.id + ( color ? '_' + color.getHexString() : '' ) + ( opacity !== undefined ? '_' + opacity : '' );
|
|
1406
1411
|
|
|
1407
|
-
|
|
1412
|
+
// Seems neither QuickLook nor usdview support scale/bias on .a values, so we need to bake opacity multipliers into
|
|
1413
|
+
// the texture. This is not ideal.
|
|
1414
|
+
const opacityIsAppliedToTextureAndNotAsScale = quickLookCompatible && opacity !== undefined;
|
|
1415
|
+
const scaleToApply = opacityIsAppliedToTextureAndNotAsScale ? new Vector4(1, 1, 1, opacity) : undefined;
|
|
1416
|
+
textures[ id ] = { texture, scale: scaleToApply };
|
|
1408
1417
|
|
|
1409
1418
|
const uv = texture.channel > 0 ? 'st' + texture.channel : 'st';
|
|
1410
1419
|
|
|
@@ -1481,7 +1490,7 @@ function buildMaterial( material: MeshBasicMaterial, textures, quickLookCompatib
|
|
|
1481
1490
|
token inputs:sourceColorSpace = "${ texture.colorSpace === 'srgb' ? 'sRGB' : 'raw' }"
|
|
1482
1491
|
float2 inputs:st.connect = ${needsTextureTransform ? textureTransformOutput : textureTransformInput}
|
|
1483
1492
|
${needsTextureScale ? `
|
|
1484
|
-
float4 inputs:scale = (${color ? color.r + ', ' + color.g + ', ' + color.b : '1, 1, 1'}, ${opacity !== undefined ? opacity : '1'})
|
|
1493
|
+
float4 inputs:scale = (${color ? color.r + ', ' + color.g + ', ' + color.b : '1, 1, 1'}, ${(opacity !== undefined && !opacityIsAppliedToTextureAndNotAsScale) ? opacity : '1'})
|
|
1485
1494
|
` : `` }
|
|
1486
1495
|
${needsNormalScaleAndBias ? `
|
|
1487
1496
|
float4 inputs:scale = (${normalScaleValueString}, ${normalScaleValueString}, ${normalScaleValueString}, 1)
|
|
@@ -1499,7 +1508,7 @@ function buildMaterial( material: MeshBasicMaterial, textures, quickLookCompatib
|
|
|
1499
1508
|
}
|
|
1500
1509
|
|
|
1501
1510
|
let effectiveOpacity = ( material.transparent || material.alphaTest ) ? material.opacity : 1;
|
|
1502
|
-
|
|
1511
|
+
|
|
1503
1512
|
if ( material instanceof MeshPhysicalMaterial && material.transmission !== undefined) {
|
|
1504
1513
|
|
|
1505
1514
|
// TODO does not help when a roughnessMap is used
|
|
@@ -1549,7 +1558,7 @@ function buildMaterial( material: MeshBasicMaterial, textures, quickLookCompatib
|
|
|
1549
1558
|
inputs.push( `${pad}float inputs:opacity.connect = ${materialRoot}/Material_${material.id}/Texture_${material.alphaMap.id}_opacity.outputs:r>` );
|
|
1550
1559
|
inputs.push( `${pad}float inputs:opacityThreshold = 0.0001` );
|
|
1551
1560
|
|
|
1552
|
-
samplers.push( buildTexture( material.alphaMap, 'opacity' ) );
|
|
1561
|
+
samplers.push( buildTexture( material.alphaMap, 'opacity', new Color( 1, 1, 1 ), effectiveOpacity ) );
|
|
1553
1562
|
|
|
1554
1563
|
} else {
|
|
1555
1564
|
|
|
@@ -1568,12 +1577,15 @@ function buildMaterial( material: MeshBasicMaterial, textures, quickLookCompatib
|
|
|
1568
1577
|
if ( material.emissiveMap ) {
|
|
1569
1578
|
|
|
1570
1579
|
inputs.push( `${pad}color3f inputs:emissiveColor.connect = ${materialRoot}/Material_${material.id}/Texture_${material.emissiveMap.id}_emissive.outputs:rgb>` );
|
|
1571
|
-
|
|
1572
|
-
|
|
1580
|
+
const color = material.emissive.clone();
|
|
1581
|
+
color.multiplyScalar( material.emissiveIntensity );
|
|
1582
|
+
samplers.push( buildTexture( material.emissiveMap, 'emissive', color ) );
|
|
1573
1583
|
|
|
1574
1584
|
} else if ( material.emissive?.getHex() > 0 ) {
|
|
1575
1585
|
|
|
1576
|
-
|
|
1586
|
+
const color = material.emissive.clone();
|
|
1587
|
+
color.multiplyScalar( material.emissiveIntensity );
|
|
1588
|
+
inputs.push( `${pad}color3f inputs:emissiveColor = ${buildColor( color )}` );
|
|
1577
1589
|
|
|
1578
1590
|
} else {
|
|
1579
1591
|
|
package/src/engine/dist/api.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
exports.__esModule = true;
|
|
13
|
-
__exportStar(require("./extensions/index.js"), exports);
|
|
14
|
-
__exportStar(require("./engine_addressables.js"), exports);
|
|
15
|
-
__exportStar(require("./engine_application.js"), exports);
|
|
16
|
-
__exportStar(require("./engine_assetdatabase.js"), exports);
|
|
17
|
-
__exportStar(require("./engine_create_objects.js"), exports);
|
|
18
|
-
__exportStar(require("./engine_components_internal.js"), exports);
|
|
19
|
-
__exportStar(require("./engine_components.js"), exports);
|
|
20
|
-
__exportStar(require("./engine_components_internal.js"), exports);
|
|
21
|
-
__exportStar(require("./engine_context_registry.js"), exports);
|
|
22
|
-
__exportStar(require("./engine_context.js"), exports);
|
|
23
|
-
__exportStar(require("./engine_coroutine.js"), exports);
|
|
24
|
-
__exportStar(require("./engine_constants.js"), exports);
|
|
25
|
-
__exportStar(require("./debug/index.js"), exports);
|
|
26
|
-
__exportStar(require("./engine_element.js"), exports);
|
|
27
|
-
__exportStar(require("./engine_element_loading.js"), exports);
|
|
28
|
-
__exportStar(require("./engine_element_attributes.js"), exports);
|
|
29
|
-
var engine_gizmos_js_1 = require("./engine_gizmos.js");
|
|
30
|
-
__createBinding(exports, engine_gizmos_js_1, "Gizmos");
|
|
31
|
-
__exportStar(require("./engine_gltf.js"), exports);
|
|
32
|
-
__exportStar(require("./engine_hot_reload.js"), exports);
|
|
33
|
-
__exportStar(require("./engine_gameobject.js"), exports);
|
|
34
|
-
__exportStar(require("./engine_networking.js"), exports);
|
|
35
|
-
__exportStar(require("./engine_networking_types.js"), exports);
|
|
36
|
-
var engine_networking_auto_js_1 = require("./engine_networking_auto.js");
|
|
37
|
-
__createBinding(exports, engine_networking_auto_js_1, "syncField");
|
|
38
|
-
__exportStar(require("./engine_networking_files.js"), exports);
|
|
39
|
-
__exportStar(require("./engine_networking_instantiate.js"), exports);
|
|
40
|
-
__exportStar(require("./engine_networking_streams.js"), exports);
|
|
41
|
-
__exportStar(require("./engine_networking_utils.js"), exports);
|
|
42
|
-
__exportStar(require("./engine_networking_peer.js"), exports);
|
|
43
|
-
__exportStar(require("./engine_patcher.js"), exports);
|
|
44
|
-
__exportStar(require("./engine_playerview.js"), exports);
|
|
45
|
-
__exportStar(require("./engine_physics.js"), exports);
|
|
46
|
-
__exportStar(require("./engine_physics.types.js"), exports);
|
|
47
|
-
__exportStar(require("./engine_physics_rapier.js"), exports);
|
|
48
|
-
__exportStar(require("./engine_scenelighting.js"), exports);
|
|
49
|
-
__exportStar(require("./engine_input.js"), exports);
|
|
50
|
-
__exportStar(require("./engine_math.js"), exports);
|
|
51
|
-
__exportStar(require("./js-extensions/index.js"), exports);
|
|
52
|
-
__exportStar(require("./engine_scenetools.js"), exports);
|
|
53
|
-
__exportStar(require("./engine_serialization.js"), exports);
|
|
54
|
-
var engine_serialization_core_js_1 = require("./engine_serialization_core.js");
|
|
55
|
-
__createBinding(exports, engine_serialization_core_js_1, "type");
|
|
56
|
-
__exportStar(require("./engine_texture.js"), exports);
|
|
57
|
-
__exportStar(require("./engine_three_utils.js"), exports);
|
|
58
|
-
__exportStar(require("./engine_time.js"), exports);
|
|
59
|
-
__exportStar(require("./engine_types.js"), exports);
|
|
60
|
-
__exportStar(require("./engine_utils_screenshot.js"), exports);
|
|
61
|
-
__exportStar(require("./engine_web_api.js"), exports);
|
|
62
|
-
__exportStar(require("./engine_utils.js"), exports);
|
|
63
|
-
var engine_typestore_js_1 = require("./engine_typestore.js");
|
|
64
|
-
__createBinding(exports, engine_typestore_js_1, "TypeStore");
|
|
65
|
-
__createBinding(exports, engine_typestore_js_1, "registerType");
|
|
66
|
-
var engine_instancing_js_1 = require("./engine_instancing.js");
|
|
67
|
-
__createBinding(exports, engine_instancing_js_1, "InstancingUtil");
|
|
68
|
-
var engine_util_decorator_js_1 = require("./engine_util_decorator.js");
|
|
69
|
-
__createBinding(exports, engine_util_decorator_js_1, "validate");
|
|
70
|
-
__createBinding(exports, engine_util_decorator_js_1, "prefix");
|
|
71
|
-
var engine_license_js_1 = require("./engine_license.js");
|
|
72
|
-
__createBinding(exports, engine_license_js_1, "hasProLicense");
|
|
73
|
-
__createBinding(exports, engine_license_js_1, "hasIndieLicense");
|