@archvisioninc/canvas 3.1.8 → 3.2.1

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.
@@ -65,7 +65,8 @@ export const UPDATABLE_ITEMS = {
65
65
  environment: 'environment',
66
66
  texture: 'texture',
67
67
  viewport: 'viewport',
68
- publish: 'publish'
68
+ publish: 'publish',
69
+ lighting: 'lighting'
69
70
  };
70
71
  export const TRANSPARENCY_MODES = {
71
72
  simple: 'simple',
@@ -1,5 +1,5 @@
1
1
  import { UPDATABLE_ITEMS } from '../constants';
2
- import { updateMaterial, addToMaterial, removeFromMaterial, updateMesh, addToMesh, removeFromMesh, updateCamera, addToCamera, removeFromCamera, updateEnvironment, addToEnvironment, removeFromEnvironment, updateViewport, addToViewport, removeFromViewport, serializeScene, updatePublish, newMetaDataEntry, buildMeshIdArray } from '../helpers';
2
+ import { updateMaterial, addToMaterial, removeFromMaterial, updateMesh, addToMesh, removeFromMesh, updateCamera, addToCamera, removeFromCamera, updateEnvironment, addToEnvironment, removeFromEnvironment, updateViewport, addToViewport, removeFromViewport, serializeScene, updatePublish, newMetaDataEntry, buildMeshIdArray, updateLighting } from '../helpers';
3
3
  import { reactProps as props } from '../Canvas';
4
4
  export const updateItem = inboundData => {
5
5
  const {
@@ -39,6 +39,9 @@ export const updateItem = inboundData => {
39
39
  case UPDATABLE_ITEMS.publish:
40
40
  if (method === 'update') updatePublish(inboundData);
41
41
  break;
42
+ case UPDATABLE_ITEMS.lighting:
43
+ if (method === 'update') updateLighting(inboundData);
44
+ break;
42
45
  default:
43
46
  break;
44
47
  }
@@ -1,4 +1,5 @@
1
- import { getUserMeshes, resetSelectedMeshes, addNewMesh, scene, mirrorGround, ground, newVector, newColor, newScreenshot, serializeScene, newMetaDataEntry, selectedMeshes, singleMeshTNode, toRadians, toDegrees, multiMeshTNode, handleMousePointerTap, prepareCamera, buildMaterialsArray, buildMeshPositionsArray, createBoundingMesh, attachToSelectMeshesNode, newTexture, getUserMaterials, buildSelectedMaterialArray, buildMeshIdArray, refreshHighlight, guiTexture, getBoundingMeshData, getScaleFactor, gizmoManager } from '../helpers';
1
+ /* eslint-disable */
2
+ import { getUserMeshes, resetSelectedMeshes, addNewMesh, scene, mirrorGround, ground, newVector, newColor, newScreenshot, serializeScene, newMetaDataEntry, selectedMeshes, singleMeshTNode, toRadians, toDegrees, multiMeshTNode, handleMousePointerTap, prepareCamera, buildMaterialsArray, buildMeshPositionsArray, createBoundingMesh, attachToSelectMeshesNode, newTexture, getUserMaterials, buildSelectedMaterialArray, buildMeshIdArray, refreshHighlight, guiTexture, getBoundingMeshData, getScaleFactor, gizmoManager, buildLightsArray } from '../helpers';
2
3
  import { toggleSafeFrame, toggleOrthographicViews, toggleBoundingBoxWidget, resetManagerGizmos, modelToOrigin, focusCamera } from '../actions';
3
4
  import { GLTF2 } from 'babylonjs-loaders';
4
5
  import { GIZMOS, TRANSPARENCY_MODES, GUI } from '../constants';
@@ -1148,4 +1149,61 @@ export const updatePublish = inboundData => {
1148
1149
  }
1149
1150
  };
1150
1151
  newMetaDataEntry('publish', withOptimizationValues);
1152
+ };
1153
+ export const updateLighting = inboundData => {
1154
+ const {
1155
+ payload
1156
+ } = inboundData;
1157
+ const {
1158
+ id,
1159
+ transforms,
1160
+ target,
1161
+ enable,
1162
+ diffuse,
1163
+ specular,
1164
+ radius,
1165
+ intensity
1166
+ } = payload;
1167
+ const light = scene.getLightByName(id);
1168
+ if (!_.isEmpty(transforms)) {
1169
+ const {
1170
+ tx,
1171
+ ty,
1172
+ tz,
1173
+ dirX,
1174
+ dirY,
1175
+ dirZ
1176
+ } = transforms;
1177
+ if (tx && ty && tz) light.position = newVector(tx, ty, tz);
1178
+ if (dirX && dirY && dirZ) light.direction = newVector(dirX, dirY, dirZ);
1179
+ }
1180
+ if (target) {
1181
+ light.setDirectionToTarget(target);
1182
+ }
1183
+ if (enable !== undefined) {
1184
+ light.setEnabled(enable);
1185
+ }
1186
+ if (radius !== undefined) {
1187
+ light.radius = radius;
1188
+ }
1189
+ if (diffuse) {
1190
+ const {
1191
+ r,
1192
+ g,
1193
+ b
1194
+ } = diffuse;
1195
+ light.diffuse = newColor(r, g, b);
1196
+ }
1197
+ if (specular) {
1198
+ const {
1199
+ r,
1200
+ g,
1201
+ b
1202
+ } = specular;
1203
+ light.specular = newColor(r, g, b);
1204
+ }
1205
+ if (intensity !== undefined) {
1206
+ light.intensity = intensity;
1207
+ }
1208
+ newMetaDataEntry('lights', buildLightsArray());
1151
1209
  };
@@ -3,7 +3,7 @@ import * as MATERIALS from 'babylonjs-materials';
3
3
  import * as BABYLONGUI from 'babylonjs-gui';
4
4
  import { LISTENERS, LIGHTS, CAMERAS, VIEWPORT } from '../constants';
5
5
  import { shortcuts, ratios, downscaling } from '../enums';
6
- import { newScene, newEngine, newCamera, newLight, newVector, newHighlightManager, handleMouseListeners, handleShortcutListeners, prepareCamera, newGround, newGridMaterial, newColor, setDefaultGridProperties, prepareAxes, getBoundingDistance, newGizmoManager, getUserMeshes, newPBRMaterial, createSafeFrame, createDragSelectBox, addInitialGizmoBehaviors, loadFromBlob, loadFromGuidURL, prepareMaterialCamera, loadFromDragDrop, addHighlightExclusion, warningChecks, toRadians, toDegrees, getStatisticsMetadata, newMetaDataEntry, serializeScene, buildMeshPositionsArray, buildMaterialsArray, updatePublish, buildSelectedMaterialArray, buildMaterialVariantsArray, removeAutoRotation, getUserNodes } from '../helpers';
6
+ import { newScene, newEngine, newCamera, newLight, newVector, newHighlightManager, handleMouseListeners, handleShortcutListeners, prepareCamera, newGround, newGridMaterial, newColor, setDefaultGridProperties, prepareAxes, getBoundingDistance, newGizmoManager, getUserMeshes, newPBRMaterial, createSafeFrame, createDragSelectBox, addInitialGizmoBehaviors, loadFromBlob, loadFromGuidURL, prepareMaterialCamera, loadFromDragDrop, addHighlightExclusion, warningChecks, toRadians, toDegrees, getStatisticsMetadata, newMetaDataEntry, serializeScene, buildMeshPositionsArray, buildMaterialsArray, updatePublish, buildSelectedMaterialArray, buildMaterialVariantsArray, removeAutoRotation, getUserNodes, buildLightsArray } from '../helpers';
7
7
  import { modelToOrigin, focusCamera } from '../actions';
8
8
  import { reactProps as props } from '../Canvas';
9
9
  import _ from 'lodash';
@@ -328,6 +328,7 @@ const initMetadataKeyDefaults = () => {
328
328
  newMetaDataEntry('viewportShadows', mirrorGround.receiveShadows);
329
329
  newMetaDataEntry('fileName', null);
330
330
  newMetaDataEntry('uvScaleLock', false);
331
+ newMetaDataEntry('lights', []);
331
332
  };
332
333
  const checkForRootNode = () => {
333
334
  let rootNode = scene.getNodeById('__root__');
@@ -449,6 +450,7 @@ export const initSceneFromFile = (sceneFromFile, fileName) => {
449
450
  newMetaDataEntry('fileName', fileName);
450
451
  newMetaDataEntry('materialVariants', buildMaterialVariantsArray());
451
452
  newMetaDataEntry('uvScaleLock', scene.metadata.uvScaleLock || false);
453
+ newMetaDataEntry('lights', buildLightsArray());
452
454
  updatePublish(fileName ? {
453
455
  payload: {
454
456
  title: fileName
@@ -608,6 +608,10 @@ export const buildMaterialsArray = () => {
608
608
  const materialsArray = materials.map(material => materialData(material));
609
609
  return materialsArray;
610
610
  };
611
+ export const buildLightsArray = () => {
612
+ const lights = scene.lights;
613
+ return lights.map(light => light.serialize());
614
+ };
611
615
  const billboardScreenshot = view => {
612
616
  const camera = scene.activeCamera.clone(view);
613
617
  if (view !== 'perspective') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@archvisioninc/canvas",
3
- "version": "3.1.8",
3
+ "version": "3.2.1",
4
4
  "private": false,
5
5
  "main": "dist/Canvas.js",
6
6
  "module": "dist/Canvas.js",
@@ -77,6 +77,7 @@ export const UPDATABLE_ITEMS = {
77
77
  texture: 'texture',
78
78
  viewport: 'viewport',
79
79
  publish: 'publish',
80
+ lighting: 'lighting',
80
81
  };
81
82
 
82
83
  export const TRANSPARENCY_MODES = {
@@ -19,6 +19,7 @@ import {
19
19
  updatePublish,
20
20
  newMetaDataEntry,
21
21
  buildMeshIdArray,
22
+ updateLighting,
22
23
  } from '../helpers';
23
24
  import { reactProps as props } from '../Canvas';
24
25
 
@@ -64,6 +65,10 @@ export const updateItem = inboundData => {
64
65
  if (method === 'update') updatePublish(inboundData);
65
66
  break;
66
67
 
68
+ case UPDATABLE_ITEMS.lighting:
69
+ if (method === 'update') updateLighting(inboundData);
70
+ break;
71
+
67
72
  default:
68
73
  break;
69
74
  }
@@ -1,3 +1,4 @@
1
+ /* eslint-disable */
1
2
  import {
2
3
  getUserMeshes,
3
4
  resetSelectedMeshes,
@@ -30,6 +31,7 @@ import {
30
31
  getBoundingMeshData,
31
32
  getScaleFactor,
32
33
  gizmoManager,
34
+ buildLightsArray,
33
35
  } from '../helpers';
34
36
  import {
35
37
  toggleSafeFrame,
@@ -1164,3 +1166,44 @@ export const updatePublish = inboundData => {
1164
1166
 
1165
1167
  newMetaDataEntry('publish', withOptimizationValues);
1166
1168
  };
1169
+
1170
+ export const updateLighting = inboundData => {
1171
+ const { payload } = inboundData;
1172
+ const { id, transforms, target, enable, diffuse, specular, radius, intensity } = payload;
1173
+
1174
+ const light = scene.getLightByName(id);
1175
+
1176
+ if (!_.isEmpty(transforms)) {
1177
+ const { tx, ty, tz, dirX, dirY, dirZ } = transforms;
1178
+ if (tx && ty && tz) light.position = newVector(tx, ty, tz);
1179
+ if (dirX && dirY && dirZ) light.direction = newVector(dirX, dirY, dirZ);
1180
+ }
1181
+
1182
+ if (target) {
1183
+ light.setDirectionToTarget(target);
1184
+ }
1185
+
1186
+ if (enable !== undefined) {
1187
+ light.setEnabled(enable);
1188
+ }
1189
+
1190
+ if (radius !== undefined) {
1191
+ light.radius = radius;
1192
+ }
1193
+
1194
+ if (diffuse) {
1195
+ const { r, g, b } = diffuse;
1196
+ light.diffuse = newColor(r, g, b);
1197
+ }
1198
+
1199
+ if (specular) {
1200
+ const { r, g, b } = specular;
1201
+ light.specular = newColor(r, g, b);
1202
+ }
1203
+
1204
+ if (intensity !== undefined) {
1205
+ light.intensity = intensity;
1206
+ }
1207
+
1208
+ newMetaDataEntry('lights', buildLightsArray())
1209
+ };
@@ -43,6 +43,7 @@ import {
43
43
  buildMaterialVariantsArray,
44
44
  removeAutoRotation,
45
45
  getUserNodes,
46
+ buildLightsArray,
46
47
  } from '../helpers';
47
48
  import { modelToOrigin, focusCamera } from '../actions';
48
49
  import { reactProps as props } from '../Canvas';
@@ -365,6 +366,7 @@ const initMetadataKeyDefaults = () => {
365
366
  newMetaDataEntry('viewportShadows', mirrorGround.receiveShadows);
366
367
  newMetaDataEntry('fileName', null);
367
368
  newMetaDataEntry('uvScaleLock', false);
369
+ newMetaDataEntry('lights', []);
368
370
  };
369
371
 
370
372
  const checkForRootNode = () => {
@@ -484,6 +486,7 @@ export const initSceneFromFile = (sceneFromFile, fileName) => {
484
486
  newMetaDataEntry('fileName', fileName);
485
487
  newMetaDataEntry('materialVariants', buildMaterialVariantsArray());
486
488
  newMetaDataEntry('uvScaleLock', scene.metadata.uvScaleLock || false);
489
+ newMetaDataEntry('lights', buildLightsArray());
487
490
 
488
491
  updatePublish(fileName ? { payload: { title: fileName } } : {});
489
492
 
@@ -666,6 +666,11 @@ export const buildMaterialsArray = () => {
666
666
  return materialsArray;
667
667
  };
668
668
 
669
+ export const buildLightsArray = () => {
670
+ const lights = scene.lights;
671
+ return lights.map(light => light.serialize());
672
+ };
673
+
669
674
  const billboardScreenshot = view => {
670
675
  const camera = scene.activeCamera.clone(view);
671
676
 
@@ -5,88 +5,15 @@ import { AppContainer, DebugButtons, Button } from './styles';
5
5
  import { theme } from 'static/theme';
6
6
  import { fetchDownloadURL } from 'helpers/fetchHelpers';
7
7
  import { ENVIRONMENTS } from 'constants';
8
- import { updateMaterial, scene, removeFromMaterial } from 'package/helpers';
8
+ import { updateLighting } from 'package/helpers';
9
9
  import Canvas from 'package/Canvas';
10
10
  import _ from 'lodash';
11
11
 
12
12
  const materialMode = false;
13
- const previewMode = true;
13
+ const previewMode = false;
14
14
  const demoScene = false;
15
15
  const shaderballGuid = '21-791A-0D8D-F8A0-63F7-5086-471F-69A7-7AB0-00';
16
16
 
17
- const serializedResponseData = {
18
- albedoColor: '#FFFFFF',
19
- albedoHasAlpha: false,
20
- albedoTexture: {
21
- name: 'Blender.png',
22
- uvXScale: 1,
23
- uvYScale: 1,
24
- uvScaleLock: false,
25
- uvXRotation: 0,
26
- uvYRotation: 0,
27
- uvZRotation: 0,
28
- uvXOffset: 0,
29
- uvYOffset: 0,
30
- url: 'data:image/png;base64,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',
31
- },
32
- alpha: 1,
33
- backfaceCullingEnabled: true,
34
- bumpIntensity: 0.5,
35
- bumpTexture: { url: '' },
36
- clearCoatEnabled: false,
37
- clearCoatIOR: 1.5,
38
- clearCoatIntensity: 1,
39
- clearCoatRoughness: 0,
40
- emissiveColor: '#000000',
41
- emissiveIntensity: 1,
42
- emissiveTexture: { url: '' },
43
- environmentIntensity: 1,
44
- id: 'material',
45
- materialId: 'material',
46
- meshSimplification: {
47
- enabled: false,
48
- estimatedTriangles: 99,
49
- optimizationType: 'estimated triangles',
50
- targetTriangles: 75244,
51
- totalTriangles: 76004,
52
- type: 'custom',
53
- userTargetTriangles: 76004,
54
- },
55
- metallic: 0,
56
- metallicTexture: { url: '' },
57
- microSurfaceTexture: { url: '' },
58
- name: 'material',
59
- opacityTexture: { url: '' },
60
- pointsCloudEnabled: false,
61
- roughness: 0.25,
62
- sssIOR: 1.5199999809265137,
63
- sssRefractionEnabled: false,
64
- sssRefractionIntensity: 1,
65
- textureDownscaling: {
66
- enabled: false,
67
- size: 4096,
68
- },
69
- transparencyEnabled: false,
70
- transparencyMode: 0,
71
- transparencyType: 'simple',
72
- wireFrameEnabled: false,
73
- };
74
-
75
- const noTextureData = {
76
- ...serializedResponseData,
77
- albedoColor: '#0675F7',
78
- clearCoatEnabled: true,
79
- environmentIntensity: 0.72,
80
- metallic: 0,
81
- roughness: 0.1,
82
- albedoTexture: { url: '' },
83
- bumpTexture: { url: '' },
84
- emissiveTexture: { url: '' },
85
- metallicTexture: { url: '' },
86
- microSurfaceTexture: { url: '' },
87
- opacityTexture: { url: '' },
88
- };
89
-
90
17
  const App = () => {
91
18
  const [ notifications, setNotifications ] = useState([]);
92
19
  const [ previewURL, setPreviewURL ] = useState(null);
@@ -127,50 +54,6 @@ const App = () => {
127
54
  const updatedArray = notifications.filter((item, i) => index !== i);
128
55
  setNotifications(updatedArray);
129
56
  };
130
- const onImageLoad = args => {
131
- const inboundData = {
132
- payload: {
133
- id: 'Material #38',
134
- metallicTexture: args,
135
-
136
- },
137
- };
138
-
139
- updateMaterial(inboundData);
140
-
141
- };
142
-
143
- const handleUpload = e => {
144
- const file = e.currentTarget.files[0];
145
- const reader = new FileReader();
146
- reader.readAsDataURL(file);
147
- reader.onload = () => onImageLoad({
148
- name: file.name,
149
- src: reader.result,
150
- });
151
- };
152
-
153
- const onRoughnessImageLoad = args => {
154
- const inboundData = {
155
- payload: {
156
- id: 'Material #38',
157
- roughnessTexture: args,
158
- },
159
- };
160
-
161
- updateMaterial(inboundData);
162
-
163
- };
164
-
165
- const handleRoughnessUpload = e => {
166
- const file = e.currentTarget.files[0];
167
- const reader = new FileReader();
168
- reader.readAsDataURL(file);
169
- reader.onload = () => onRoughnessImageLoad({
170
- name: file.name,
171
- src: reader.result,
172
- });
173
- };
174
57
 
175
58
  useEffect(() => {
176
59
  getPreviewURL();
@@ -222,52 +105,18 @@ const App = () => {
222
105
  theme={theme}
223
106
  $selectedTheme={selectedTheme}
224
107
  onClick={() => {
225
- const inboundData = {
226
- payload: {
227
- id: 'Material #38',
228
- removeRoughnessTexture: true,
229
- },
230
- };
231
-
232
- removeFromMaterial(inboundData);
108
+ setExportModel(true);
233
109
  }}
234
110
  >
235
- Remove Roughness Texture
111
+ Take screenshot
236
112
  </Button>
237
113
 
238
- <input
239
- name='Metallic'
240
- title='Metallic'
241
- type={'file'}
242
- onChange={handleUpload}
243
- accept={'image/*'}
244
- />
245
-
246
- <input
247
- name='Roughness'
248
- title='Roughness'
249
- type={'file'}
250
- onChange={handleRoughnessUpload}
251
- accept={'image/*'}
252
- />
253
-
254
114
  <Button
255
115
  theme={theme}
256
116
  $selectedTheme={selectedTheme}
257
- onClick={() => {
258
- const inboundData = {
259
- payload: {
260
- id: 'material',
261
- clearTextureChannels: true,
262
- ...noTextureData,
263
- },
264
- };
265
-
266
- updateMaterial(inboundData);
267
- console.log({ metadata: scene.metadata });
268
- }}
117
+ onClick={() => setSelectedTheme(selectedTheme === 'light' ? 'dark' : 'light')}
269
118
  >
270
- Change material
119
+ Change theme
271
120
  </Button>
272
121
 
273
122
  <Button
@@ -276,35 +125,14 @@ const App = () => {
276
125
  onClick={() => {
277
126
  const inboundData = {
278
127
  payload: {
279
- id: 'material',
280
- uvYOffset: 0.25,
281
- uvScaleLock: true,
128
+ id: 'directional',
129
+ intensity: 5,
282
130
  },
283
131
  };
284
-
285
- updateMaterial(inboundData);
286
- console.log({ metadata: scene.metadata });
132
+ updateLighting(inboundData);
287
133
  }}
288
134
  >
289
- UV Y Offset
290
- </Button>
291
-
292
- <Button
293
- theme={theme}
294
- $selectedTheme={selectedTheme}
295
- onClick={() => {
296
- setExportModel(true);
297
- }}
298
- >
299
- Take screenshot
300
- </Button>
301
-
302
- <Button
303
- theme={theme}
304
- $selectedTheme={selectedTheme}
305
- onClick={() => setSelectedTheme(selectedTheme === 'light' ? 'dark' : 'light')}
306
- >
307
- Change theme
135
+ Update Intensity
308
136
  </Button>
309
137
  </DebugButtons>
310
138
  </AppContainer>