MikaFil commited on
Commit
e6c5b4a
·
verified ·
1 Parent(s): 9fa1adf

Update viewer.js

Browse files
Files changed (1) hide show
  1. viewer.js +21 -6
viewer.js CHANGED
@@ -21,6 +21,8 @@ let plyUrl, glbUrl;
21
  export async function initializeViewer(config, instanceId) {
22
  if (viewerInitialized) return;
23
 
 
 
24
  const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
25
  const isMobile = isIOS || /Android/i.test(navigator.userAgent);
26
 
@@ -103,17 +105,17 @@ export async function initializeViewer(config, instanceId) {
103
  antialias: false
104
  };
105
  try {
106
- return await pc.createGraphicsDevice(canvas, {
107
  ...baseOpts,
108
  deviceTypes: preferWebgl2 ? ["webgl2"] : ["webgl1"]
109
  });
 
 
110
  } catch (err) {
111
  if (preferWebgl2) {
112
  console.warn("[viewer] WebGL2 unavailable, retrying with WebGL1 …", err);
113
- return await pc.createGraphicsDevice(canvas, {
114
- ...baseOpts,
115
- deviceTypes: ["webgl1"]
116
- });
117
  }
118
  throw err;
119
  }
@@ -122,6 +124,8 @@ export async function initializeViewer(config, instanceId) {
122
  const device = await getGraphicsDevice(true); // first try WebGL2
123
  device.maxPixelRatio = Math.min(window.devicePixelRatio, 2);
124
 
 
 
125
  const opts = new pc.AppOptions();
126
  opts.graphicsDevice = device;
127
  opts.mouse = new pc.Mouse(canvas);
@@ -176,8 +180,13 @@ export async function initializeViewer(config, instanceId) {
176
 
177
  const loader = new pc.AssetListLoader(Object.values(assets), app.assets);
178
  let lastProg = 0;
179
- assets.model.on('load', () => progressDialog.style.display = 'none');
 
 
 
 
180
  assets.model.on('error', err => {
 
181
  console.error("Error loading PLY file:", err);
182
  progressDialog.innerHTML = `<p style="color: red">Error loading model: ${err}</p>`;
183
  });
@@ -193,7 +202,9 @@ export async function initializeViewer(config, instanceId) {
193
  }
194
  }, 100);
195
 
 
196
  loader.load(async () => {
 
197
  app.start();
198
  app.scene.envAtlas = assets.hdr.resource;
199
 
@@ -270,6 +281,8 @@ export async function initializeViewer(config, instanceId) {
270
  });
271
  app.root.addChild(cameraEntity);
272
 
 
 
273
  // 11. Misc per-frame guard & resize --------------------------------------
274
  app.once('update', () => resetViewerCamera());
275
  app.on('update', dt => {
@@ -300,9 +313,11 @@ export async function initializeViewer(config, instanceId) {
300
 
301
  progressDialog.style.display = 'none';
302
  viewerInitialized = true;
 
303
  });
304
 
305
  } catch (error) {
 
306
  console.error("Error initializing PlayCanvas viewer:", error);
307
  progressDialog.innerHTML = `<p style="color: red">Error loading viewer: ${error.message}</p>`;
308
  }
 
21
  export async function initializeViewer(config, instanceId) {
22
  if (viewerInitialized) return;
23
 
24
+ alert("Viewer init starting...");
25
+
26
  const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
27
  const isMobile = isIOS || /Android/i.test(navigator.userAgent);
28
 
 
105
  antialias: false
106
  };
107
  try {
108
+ const dev = await pc.createGraphicsDevice(canvas, {
109
  ...baseOpts,
110
  deviceTypes: preferWebgl2 ? ["webgl2"] : ["webgl1"]
111
  });
112
+ alert(preferWebgl2 ? "WebGL2 context OK" : "WebGL1 context OK");
113
+ return dev;
114
  } catch (err) {
115
  if (preferWebgl2) {
116
  console.warn("[viewer] WebGL2 unavailable, retrying with WebGL1 …", err);
117
+ alert("WebGL2 unavailable on this device; falling back to WebGL1");
118
+ return getGraphicsDevice(false);
 
 
119
  }
120
  throw err;
121
  }
 
124
  const device = await getGraphicsDevice(true); // first try WebGL2
125
  device.maxPixelRatio = Math.min(window.devicePixelRatio, 2);
126
 
127
+ alert("Graphics device initialized; creating App…");
128
+
129
  const opts = new pc.AppOptions();
130
  opts.graphicsDevice = device;
131
  opts.mouse = new pc.Mouse(canvas);
 
180
 
181
  const loader = new pc.AssetListLoader(Object.values(assets), app.assets);
182
  let lastProg = 0;
183
+
184
+ assets.model.on('load', () => {
185
+ alert("PLY model asset loaded successfully");
186
+ progressDialog.style.display = 'none';
187
+ });
188
  assets.model.on('error', err => {
189
+ alert("Error loading PLY file: " + err);
190
  console.error("Error loading PLY file:", err);
191
  progressDialog.innerHTML = `<p style="color: red">Error loading model: ${err}</p>`;
192
  });
 
202
  }
203
  }, 100);
204
 
205
+ alert("Starting asset loader…");
206
  loader.load(async () => {
207
+ alert("All assets loaded; starting app…");
208
  app.start();
209
  app.scene.envAtlas = assets.hdr.resource;
210
 
 
281
  });
282
  app.root.addChild(cameraEntity);
283
 
284
+ alert("Camera and controls set up; rendering should now appear.");
285
+
286
  // 11. Misc per-frame guard & resize --------------------------------------
287
  app.once('update', () => resetViewerCamera());
288
  app.on('update', dt => {
 
313
 
314
  progressDialog.style.display = 'none';
315
  viewerInitialized = true;
316
+ alert("Viewer initialization complete.");
317
  });
318
 
319
  } catch (error) {
320
+ alert("Error initializing PlayCanvas viewer: " + error);
321
  console.error("Error initializing PlayCanvas viewer:", error);
322
  progressDialog.innerHTML = `<p style="color: red">Error loading viewer: ${error.message}</p>`;
323
  }