@sequent-org/ifc-viewer 1.2.4-ci.44.0 → 1.2.4-ci.46.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 +1 -1
- package/src/IfcViewer.js +2 -2
- package/src/viewer/Viewer.js +9 -15
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.
|
|
4
|
+
"version": "1.2.4-ci.46.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;">
|
package/src/viewer/Viewer.js
CHANGED
|
@@ -455,9 +455,13 @@ export class Viewer {
|
|
|
455
455
|
// logarithmicDepthBuffer: уменьшает z-fighting на почти копланарных поверхностях (часто в IFC).
|
|
456
456
|
// Это заметно снижает "мигание" тонких накладных деталей на фасадах.
|
|
457
457
|
// stencil: нужен для отрисовки "cap" по контуру сечения
|
|
458
|
+
// Фон должен выглядеть белым всегда, но при этом сохраняем прежнее поведение рендера (прозрачный canvas),
|
|
459
|
+
// чтобы не менять визуальное смешивание (тени/пост-эффекты) относительно версии "до белого фона".
|
|
460
|
+
// Белизна обеспечивается фоном контейнера (IfcViewer.js), а canvas остаётся прозрачным.
|
|
458
461
|
this.renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true, logarithmicDepthBuffer: true, stencil: true });
|
|
459
462
|
this.renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 2));
|
|
460
463
|
this.renderer.autoClear = false; // управляем очисткой вручную для мульти-проходов
|
|
464
|
+
try { this.renderer.setClearColor(0xffffff, 0); } catch (_) {}
|
|
461
465
|
// Тени по умолчанию выключены (включаются только через setShadowsEnabled)
|
|
462
466
|
this.renderer.shadowMap.enabled = false;
|
|
463
467
|
this.renderer.shadowMap.type = THREE.PCFSoftShadowMap;
|
|
@@ -480,6 +484,8 @@ export class Viewer {
|
|
|
480
484
|
|
|
481
485
|
// Сцена
|
|
482
486
|
this.scene = new THREE.Scene();
|
|
487
|
+
// Оставляем фон сцены прозрачным (белый фон задаётся контейнером).
|
|
488
|
+
try { this.scene.background = null; } catch (_) {}
|
|
483
489
|
// Оверлей-сцена для секущих манипуляторов (без клиппинга)
|
|
484
490
|
this.sectionOverlayScene = new THREE.Scene();
|
|
485
491
|
|
|
@@ -2667,24 +2673,12 @@ export class Viewer {
|
|
|
2667
2673
|
* @param {boolean} enabled
|
|
2668
2674
|
*/
|
|
2669
2675
|
setStep3BackgroundEnabled(enabled) {
|
|
2670
|
-
|
|
2671
|
-
|
|
2676
|
+
// По требованиям: фон ВСЕГДА белый (за счёт контейнера), и шаг 3 не должен менять фон сцены.
|
|
2677
|
+
// Поэтому игнорируем "включение" и удерживаем background прозрачным.
|
|
2672
2678
|
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
2679
|
this._step3Background.enabled = false;
|
|
2685
2680
|
this._step3Background.snapshot = null;
|
|
2686
|
-
|
|
2687
|
-
try { this.scene.background = snap.background ?? null; } catch (_) {}
|
|
2681
|
+
try { this.scene.background = null; } catch (_) {}
|
|
2688
2682
|
}
|
|
2689
2683
|
|
|
2690
2684
|
setAOEnabled(enabled) {
|