@archvisioninc/canvas 2.4.8 → 2.5.0

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.
@@ -1,6 +1,6 @@
1
1
  import * as BABYLON from 'babylonjs';
2
2
  import { newVector } from './utilityHelpers';
3
- import { scene, engine, canvas, selectedMeshes, getParamOfSelectedMeshes, getUserMeshes, defaultCameraPosition } from '../helpers';
3
+ import { scene, engine, canvas, selectedMeshes, getParamOfSelectedMeshes, getUserMeshes, defaultCameraPosition, getBoundingMeshData } from '../helpers';
4
4
  import { CAMERAS, MESH_PARAMS } from '../constants';
5
5
  import { focusCamera, toggleTurntable } from '../actions';
6
6
  import { orthoOptions, ratios } from '../enums';
@@ -35,14 +35,20 @@ export const prepareCamera = () => {
35
35
  };
36
36
  export const prepareMaterialCamera = () => {
37
37
  const camera = scene.activeCamera;
38
- const primarySurface = scene.getMeshById('node0_primitive1');
38
+ const base = scene.getMeshById('node2');
39
+ const sphere = scene.getMeshById('node4');
39
40
  camera.position = defaultCameraPosition();
40
- if (primarySurface) {
41
- const meshCenter = primarySurface.getBoundingInfo().boundingBox.centerWorld;
41
+ if (base && sphere) {
42
+ const primarySurfaces = [sphere, base];
43
+ const meshCenter = getBoundingMeshData(primarySurfaces).center;
42
44
  camera.setTarget(meshCenter);
43
45
  camera.alpha = 1.57;
44
- camera.beta = 1.20;
45
- camera.radius = 1.57;
46
+ camera.beta = 1.35;
47
+ camera.lowerRadiusLimit = 0.3239;
48
+ camera.upperRadiusLimit = 5000;
49
+ camera.minZ = 0.1;
50
+ camera.maxZ = 10000;
51
+ camera.radius = 0.785;
46
52
  }
47
53
  };
48
54
  export const toggleCameraMode = (orthoCamera, requestedMode) => {
@@ -274,7 +274,9 @@ export const updateMaterial = inboundData => {
274
274
  material.transparencyType = _.toLower(transparencyType);
275
275
  }
276
276
  const isComplex = _.toLower(material.transparencyType) === TRANSPARENCY_MODES.complex;
277
- material.subSurface.isRefractionEnabled = isComplex;
277
+ if (material.subSurface) {
278
+ material.subSurface.isRefractionEnabled = isComplex;
279
+ }
278
280
  if (isComplex) {
279
281
  if (sssRefractionIntensity !== undefined) material.subSurface.refractionIntensity = sssRefractionIntensity ?? 1;
280
282
  if (sssIOR !== undefined) material.subSurface.indexOfRefraction = sssIOR ?? 1.52;
@@ -1,3 +1,4 @@
1
+ /* eslint-disable */
1
2
  import * as BABYLON from 'babylonjs';
2
3
  import * as MATERIALS from 'babylonjs-materials';
3
4
  import * as BABYLONGUI from 'babylonjs-gui';
@@ -100,11 +101,9 @@ const initCamera = () => {
100
101
  z: 0
101
102
  };
102
103
  newCamera('defaultCamera', cameraLocation, CAMERAS.ArcRotateCamera, cameraMeta);
103
- if (props.materialMode) {
104
- prepareMaterialCamera();
105
- return;
104
+ if (!props.materialMode) {
105
+ prepareCamera();
106
106
  }
107
- prepareCamera();
108
107
  };
109
108
  const initGUI = () => {
110
109
  const aspectRatio = props.ratio?.value || ratios.broadcast.value;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@archvisioninc/canvas",
3
- "version": "2.4.8",
3
+ "version": "2.5.0",
4
4
  "private": false,
5
5
  "main": "dist/Canvas.js",
6
6
  "module": "dist/Canvas.js",
@@ -1,21 +1,20 @@
1
1
  import { MESSAGE_TYPES } from 'package/constants';
2
2
  import { progressConfig } from 'package/helpers';
3
+ import _ from 'lodash';
3
4
 
4
5
  const clearExisting = true;
5
6
 
6
7
  export const fetchDownloadURL = async args => {
7
- const { addNotification, clearNotifications, setPreviewURL } = args;
8
+ const { addNotification, rpcGuid, clearNotifications, setPreviewURL } = args;
8
9
 
9
10
  try {
10
- const rpcGuid = window.location.pathname.split('/')[1];
11
11
  const format = 'GLB';
12
12
  const message = 'Getting file from GUID...';
13
13
 
14
-
15
- if (rpcGuid) {
14
+ if (!_.isEmpty(rpcGuid)) {
16
15
  const servicesURL = `https://api.archvision.services/rpc/v1/integration/${rpcGuid}/download/${format}`;
17
16
  // eslint-disable-next-line
18
- const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2FyY2h2aXNpb24uY29tIiwic3ViIjozOTUxNTcsInRva2VuX3R5cGUiOiJiZWFyZXIiLCJzY29wZSI6ImJhc2ljIiwiYXVkIjoiNDVFUnF3SEV5SWRqbXhkaUU4MUxMbDlFYTN2SzZZQ3dLNWE2R2xEMyIsImlhdCI6MTY5MTAwNTE4MywiZXhwIjoxNjk2MTg5MTgzfQ.7_2iKl8EpYyhi9o99U6RJ2yR-knLXnLj1Vq8yPdYUdk';
17
+ const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2FyY2h2aXNpb24uY29tIiwic3ViIjozOTUxNTcsInRva2VuX3R5cGUiOiJiZWFyZXIiLCJzY29wZSI6ImJhc2ljIiwiYXVkIjoiNDVFUnF3SEV5SWRqbXhkaUU4MUxMbDlFYTN2SzZZQ3dLNWE2R2xEMyIsImlhdCI6MTY5NTA0MTc0MCwiZXhwIjoxNzAwMjI1NzQwfQ.xTj9rYTPWr8XBHgM1Hcz2DBF6xln8muyGR1SwJWRGqk';
19
18
  const options = {
20
19
  method: 'GET',
21
20
  headers: {
@@ -8,6 +8,7 @@ import {
8
8
  getParamOfSelectedMeshes,
9
9
  getUserMeshes,
10
10
  defaultCameraPosition,
11
+ getBoundingMeshData,
11
12
  } from '../helpers';
12
13
  import { CAMERAS, MESH_PARAMS } from '../constants';
13
14
  import { focusCamera, toggleTurntable } from '../actions';
@@ -62,15 +63,22 @@ export const prepareCamera = () => {
62
63
 
63
64
  export const prepareMaterialCamera = () => {
64
65
  const camera = scene.activeCamera;
65
- const primarySurface = scene.getMeshById('node0_primitive1');
66
+ const base = scene.getMeshById('node2');
67
+ const sphere = scene.getMeshById('node4');
66
68
  camera.position = defaultCameraPosition();
67
69
 
68
- if (primarySurface) {
69
- const meshCenter = primarySurface.getBoundingInfo().boundingBox.centerWorld;
70
+ if (base && sphere) {
71
+ const primarySurfaces = [ sphere, base ];
72
+ const meshCenter = getBoundingMeshData(primarySurfaces).center;
73
+
70
74
  camera.setTarget(meshCenter);
71
75
  camera.alpha = 1.57;
72
- camera.beta = 1.20;
73
- camera.radius = 1.57;
76
+ camera.beta = 1.35;
77
+ camera.lowerRadiusLimit = 0.3239;
78
+ camera.upperRadiusLimit = 5000;
79
+ camera.minZ = 0.1;
80
+ camera.maxZ = 10000;
81
+ camera.radius = 0.785;
74
82
  }
75
83
  };
76
84
 
@@ -314,7 +314,10 @@ export const updateMaterial = inboundData => {
314
314
  }
315
315
 
316
316
  const isComplex = _.toLower(material.transparencyType) === TRANSPARENCY_MODES.complex;
317
- material.subSurface.isRefractionEnabled = isComplex;
317
+
318
+ if (material.subSurface) {
319
+ material.subSurface.isRefractionEnabled = isComplex;
320
+ }
318
321
 
319
322
  if (isComplex) {
320
323
  if (sssRefractionIntensity !== undefined) material.subSurface.refractionIntensity = sssRefractionIntensity ?? 1;
@@ -1,3 +1,4 @@
1
+ /* eslint-disable */
1
2
  import * as BABYLON from 'babylonjs';
2
3
  import * as MATERIALS from 'babylonjs-materials';
3
4
  import * as BABYLONGUI from 'babylonjs-gui';
@@ -136,12 +137,9 @@ const initCamera = () => {
136
137
  const cameraLocation = { x: 0, y: 0, z: 0 };
137
138
  newCamera('defaultCamera', cameraLocation, CAMERAS.ArcRotateCamera, cameraMeta);
138
139
 
139
- if (props.materialMode) {
140
- prepareMaterialCamera();
141
- return;
140
+ if (!props.materialMode) {
141
+ prepareCamera();
142
142
  }
143
-
144
- prepareCamera();
145
143
  };
146
144
 
147
145
  const initGUI = () => {
@@ -1,3 +1,4 @@
1
+ /* eslint-disable */
1
2
  import { useEffect, useState, useCallback } from 'react';
2
3
  import { Notifications } from 'components';
3
4
  import { AppContainer, DebugButtons, Button } from './styles';
@@ -8,9 +9,10 @@ import { updateCamera, scene } from 'package/helpers';
8
9
  import Canvas from 'package/Canvas';
9
10
  import _ from 'lodash';
10
11
 
11
- const materialMode = false;
12
+ const materialMode = true;
12
13
  const previewMode = false;
13
14
  const demoScene = false;
15
+ const shaderballGuid = '21-4D80-79E5-E2E5-C1EF-FCED-D3C2-D990-0927-00';
14
16
 
15
17
  const App = () => {
16
18
  const [ notifications, setNotifications ] = useState([]);
@@ -37,10 +39,16 @@ const App = () => {
37
39
  }, [ notifications, setNotifications ]);
38
40
 
39
41
  const getPreviewURL = useCallback(() => {
40
- const args = { addNotification, clearNotifications, setPreviewURL };
41
- if (guid) fetchDownloadURL(args);
42
+ const args = {
43
+ addNotification,
44
+ rpcGuid: materialMode ? shaderballGuid : guid,
45
+ clearNotifications,
46
+ setPreviewURL,
47
+ };
48
+
49
+ fetchDownloadURL(args);
42
50
  // eslint-disable-next-line
43
- }, [ guid ]);
51
+ }, [ guid, materialMode ]);
44
52
 
45
53
  const removeNotification = index => {
46
54
  const updatedArray = notifications.filter((item, i) => index !== i);