@sequent-org/ifc-viewer 1.2.4-ci.44.0 → 1.2.4-ci.45.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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sequent-org/ifc-viewer",
3
3
  "private": false,
4
- "version": "1.2.4-ci.44.0",
4
+ "version": "1.2.4-ci.45.0",
5
5
  "type": "module",
6
6
  "description": "IFC 3D model viewer component for web applications - fully self-contained with local IFCLoader",
7
7
  "main": "src/index.js",
package/src/IfcViewer.js CHANGED
@@ -301,7 +301,7 @@ export class IfcViewer {
301
301
  _createInterface() {
302
302
  // Основная разметка просмотрщика
303
303
  const html = `
304
- <div class="ifc-viewer-container" style="width: 100%; height: 100%; position: relative; display: flex; flex-direction: column; border:0px red solid;">
304
+ <div class="ifc-viewer-container" style="width: 100%; height: 100%; position: relative; display: flex; flex-direction: column; background: #ffffff; border:0px red solid;">
305
305
  <!-- Прелоадер -->
306
306
  <div id="ifcPreloader" class="absolute inset-0 bg-base-100 flex items-center justify-center z-50">
307
307
  <div class="text-center">
@@ -352,7 +352,7 @@ export class IfcViewer {
352
352
  </div>
353
353
 
354
354
  <!-- Основной контейнер просмотрщика -->
355
- <div id="ifcViewerMain" class="w-full flex-1 relative"></div>
355
+ <div id="ifcViewerMain" class="w-full flex-1 relative bg-base-100" style="background: #ffffff;"></div>
356
356
 
357
357
  <!-- Боковая панель (временно скрыта) -->
358
358
  <div id="ifcSidebar" class="absolute left-0 top-0 h-full w-80 bg-base-200 shadow-lg transform -translate-x-full transition-transform duration-300 pointer-events-none z-40" style="display: none;">
@@ -455,9 +455,14 @@ export class Viewer {
455
455
  // logarithmicDepthBuffer: уменьшает z-fighting на почти копланарных поверхностях (часто в IFC).
456
456
  // Это заметно снижает "мигание" тонких накладных деталей на фасадах.
457
457
  // stencil: нужен для отрисовки "cap" по контуру сечения
458
- this.renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true, logarithmicDepthBuffer: true, stencil: true });
458
+ // ВАЖНО: фон всегда должен быть чисто белым и не зависеть от CSS-окружения (модалки/страницы).
459
+ // Поэтому делаем рендер НЕпрозрачным (alpha: false) и задаём белый clearColor.
460
+ this.renderer = new THREE.WebGLRenderer({ antialias: true, alpha: false, logarithmicDepthBuffer: true, stencil: true });
459
461
  this.renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 2));
460
462
  this.renderer.autoClear = false; // управляем очисткой вручную для мульти-проходов
463
+ try {
464
+ this.renderer.setClearColor(0xffffff, 1);
465
+ } catch (_) {}
461
466
  // Тени по умолчанию выключены (включаются только через setShadowsEnabled)
462
467
  this.renderer.shadowMap.enabled = false;
463
468
  this.renderer.shadowMap.type = THREE.PCFSoftShadowMap;
@@ -480,6 +485,8 @@ export class Viewer {
480
485
 
481
486
  // Сцена
482
487
  this.scene = new THREE.Scene();
488
+ // Гарантируем белый фон сцены (в том числе для composer/pass-ов).
489
+ try { this.scene.background = new THREE.Color(0xffffff); } catch (_) {}
483
490
  // Оверлей-сцена для секущих манипуляторов (без клиппинга)
484
491
  this.sectionOverlayScene = new THREE.Scene();
485
492
 
@@ -2667,24 +2674,12 @@ export class Viewer {
2667
2674
  * @param {boolean} enabled
2668
2675
  */
2669
2676
  setStep3BackgroundEnabled(enabled) {
2670
- const next = !!enabled;
2671
- if (next === this._step3Background.enabled) return;
2677
+ // По требованиям: фон ВСЕГДА чисто белый, и шаг 3 не должен менять фон сцены.
2678
+ // Поэтому игнорируем "включение" и принудительно удерживаем белый фон.
2672
2679
  if (!this.scene) return;
2673
-
2674
- if (next) {
2675
- // Снимем, что было до (Color|Texture|null)
2676
- const prev = this.scene.background ?? null;
2677
- this._step3Background.snapshot = { background: prev };
2678
- try { this.scene.background = new THREE.Color(this._step3Background.colorHex); } catch (_) {}
2679
- this._step3Background.enabled = true;
2680
- return;
2681
- }
2682
-
2683
- const snap = this._step3Background.snapshot;
2684
2680
  this._step3Background.enabled = false;
2685
2681
  this._step3Background.snapshot = null;
2686
- if (!snap) return;
2687
- try { this.scene.background = snap.background ?? null; } catch (_) {}
2682
+ try { this.scene.background = new THREE.Color(0xffffff); } catch (_) {}
2688
2683
  }
2689
2684
 
2690
2685
  setAOEnabled(enabled) {