|
|
@@ -116,7 +116,7 @@ function saveGLState(A) {
|
|
|
|
|
|
return g;
|
|
|
}
|
|
|
-function resetGLState(A) {
|
|
|
+function resetGLState(A, clear) {
|
|
|
|
|
|
A.disable(A.BLEND),
|
|
|
A.disable(A.CULL_FACE),//
|
|
|
@@ -124,9 +124,11 @@ function resetGLState(A) {
|
|
|
A.disable(A.POLYGON_OFFSET_FILL),
|
|
|
A.disable(A.SCISSOR_TEST),
|
|
|
A.disable(A.STENCIL_TEST),
|
|
|
- A.disable(A.SAMPLE_ALPHA_TO_COVERAGE),
|
|
|
- // A.colorMask(true, true, true, true),
|
|
|
- //A.clearColor(0, 0, 0, 0),
|
|
|
+ A.disable(A.SAMPLE_ALPHA_TO_COVERAGE)
|
|
|
+ /* if(clear){
|
|
|
+ A.colorMask(true, true, true, true)
|
|
|
+ A.clearColor(0, 0, 0, 0)
|
|
|
+ } */
|
|
|
A.depthMask(true),
|
|
|
A.depthFunc(A.LESS)
|
|
|
A.clearDepth(1),
|
|
|
@@ -1442,19 +1444,19 @@ var Lodder = class {
|
|
|
))
|
|
|
}
|
|
|
|
|
|
- lod(camera, width) {
|
|
|
- if(!this.worker.working ){
|
|
|
+ lod(camera, width, scale=1) {
|
|
|
+ if(!this.worker.working && !this.pauseLod){
|
|
|
if(distanceSq(camera.eye, this.eye2) > .001 || distanceSq(camera.look, this.look2) > .001 || this.version != this.sortVersion){
|
|
|
this.worker.working = !0
|
|
|
|
|
|
- /* console.log('lod', Date.now() - lastLodTime),
|
|
|
+ /* console.log('lod', Date.now() - lastLodTime),
|
|
|
lastLodTime = Date.now(),
|
|
|
- */
|
|
|
+ */
|
|
|
this.send("lod", {
|
|
|
eye: camera.eye,
|
|
|
look: camera.look,
|
|
|
center: camera.center,
|
|
|
- focal: camera.projMat[0] * width / 2 / window.devicePixelRatio, //改:原版的canvas.width没有乘以dpr,是比较模糊的,所以我在这除以dpr,否则手机点数太多,
|
|
|
+ focal: camera.projMat[0] * width / 2 / scale /* viewer.splatter.scale *//* window.devicePixelRatio */, //改:原版的canvas.width没有乘以dpr,是比较模糊的,所以我在这除以dpr,否则手机点数太多,
|
|
|
detail: this.detail,
|
|
|
fov: camera.getMaxFov()
|
|
|
}),//focal和hfov有关 大一点似乎点数少一些
|
|
|
@@ -1471,7 +1473,7 @@ var Lodder = class {
|
|
|
}
|
|
|
|
|
|
sort(A, g, I) {
|
|
|
- if (!this.worker.working) {
|
|
|
+ if (!this.worker.working && !this.pauseSort) {
|
|
|
if (!(distanceSq(A.eye, this.eye3) > .001))
|
|
|
return !1;
|
|
|
this.worker.working = !0,
|
|
|
@@ -1491,6 +1493,12 @@ var Lodder = class {
|
|
|
this.update(),
|
|
|
console.log(`Detail: ${this.detail}`)
|
|
|
}
|
|
|
+ setDetail2(A) {
|
|
|
+ this.detail = A,
|
|
|
+ this.version++,
|
|
|
+ this.update()
|
|
|
+ }
|
|
|
+
|
|
|
receiveBlock(fileName, cacheIndex, I) {
|
|
|
//console.log('receiveBlock', 'index', fileName, 'page', cacheIndex)
|
|
|
|
|
|
@@ -1799,10 +1807,19 @@ class Renderer {
|
|
|
lastRender = Date.now()
|
|
|
*/
|
|
|
|
|
|
- if (this.options.sort && (this.sort(A) || this.lodder.lod(A, width)),
|
|
|
- this.upload(),
|
|
|
- this.ifUpdateShader(),
|
|
|
- !(this.gauss1 && this.gauss2 && this.gauss3 && this.bufferUsing.size))
|
|
|
+ if(this.options.sort){
|
|
|
+
|
|
|
+ //Potree.Common.intervalTool.isWaiting('lodAndSort', () => {
|
|
|
+ this.sort(A) || this.lodder.lod(A, width, this.splatter.scale)
|
|
|
+ //}, 1000);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ this.upload()
|
|
|
+ this.ifUpdateShader()
|
|
|
+ if (!(this.gauss1 && this.gauss2 && this.gauss3 && this.bufferUsing.size))
|
|
|
return;
|
|
|
let B = this.gl;
|
|
|
B.bindVertexArray(this.vao),
|
|
|
@@ -1811,10 +1828,29 @@ class Renderer {
|
|
|
B.blendFunc(B.ONE, B.ONE_MINUS_SRC_ALPHA),
|
|
|
this.draw(A, this.shader_noDepth, width, height),
|
|
|
B.bindVertexArray(null)
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+ renderDepth1(A, w, h ) {
|
|
|
+ if (this.ifUpdateShader(),
|
|
|
+ !(this.gauss1 && this.gauss2 && this.gauss3 && this.bufferUsing.size))
|
|
|
+ return;
|
|
|
+ let B = this.gl;
|
|
|
+ B.bindVertexArray(this.vao)
|
|
|
+
|
|
|
+ B.viewport(0, 0, w, h ),
|
|
|
+ B.clearColor(1, 1, 1, 1),
|
|
|
+
|
|
|
+ viewer.renderer.setClearColor( 0xffffff, 1)//B.clearColor(1, 1, 1, 1),
|
|
|
+ B.clear(B.COLOR_BUFFER_BIT),
|
|
|
+ B.disable(B.BLEND),
|
|
|
+ B.disable(B.DEPTH_TEST),
|
|
|
+ this.draw(A, this.shader_depth, w, h),
|
|
|
+ B.bindVertexArray(null)
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
renderDepth(A, w, h, x, y) {
|
|
|
if (this.ifUpdateShader(),
|
|
|
!(this.gauss1 && this.gauss2 && this.gauss3 && this.bufferUsing.size))
|
|
|
@@ -1842,27 +1878,27 @@ class Renderer {
|
|
|
B.disable(B.SCISSOR_TEST) //add
|
|
|
|
|
|
}
|
|
|
- /* sg(A, g) {
|
|
|
+ sg(A, g) {//hitTest for 用controls时
|
|
|
let I = this.gl
|
|
|
, [B,E] = [I.canvas.width / 2, I.canvas.height / 2]
|
|
|
, i = new Framebuffer(I,B,E);
|
|
|
- i.O(I.COLOR_ATTACHMENT0, I.RGBA, I.RGBA, I.UNSIGNED_BYTE),
|
|
|
- i.T(),
|
|
|
+ i.set(I.COLOR_ATTACHMENT0, I.RGBA, I.RGBA, I.UNSIGNED_BYTE),
|
|
|
+ i.check(),
|
|
|
i.bind(),
|
|
|
- this.renderDepth(A, B, E);
|
|
|
+ this.renderDepth1(A, B, E);
|
|
|
let o = new Uint8Array(4)
|
|
|
, D = [];
|
|
|
for (let[A,C] of g) {
|
|
|
let[g,i] = [Math.round(A * B), Math.round(C * E)];
|
|
|
I.readPixels(g, i, 1, 1, I.RGBA, I.UNSIGNED_BYTE, o);
|
|
|
- let w = Q(...o)
|
|
|
+ let w = decodeFloatRGB(...o)
|
|
|
, t = Math.exp(12 * w) - 1;
|
|
|
D.push(t < 1e5 ? t : null)
|
|
|
}
|
|
|
- return i.l(),
|
|
|
+ return i.unbind(),
|
|
|
i.delete(),
|
|
|
D
|
|
|
- } */
|
|
|
+ }
|
|
|
|
|
|
getDepth(camera, mouseArr) { //在这只会有一个mouse
|
|
|
let I = this.gl
|
|
|
@@ -2122,9 +2158,9 @@ class Renderer {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- /* let W = 1e-5
|
|
|
+ let W = 1e-5
|
|
|
, p = 9e4
|
|
|
- , X = class {
|
|
|
+ , Controls = class {
|
|
|
constructor(A, g=[0, -1, 0]) {
|
|
|
this.center = Vec3(),
|
|
|
this.Mg = 0,
|
|
|
@@ -2172,7 +2208,7 @@ class Renderer {
|
|
|
Xg: !1
|
|
|
},
|
|
|
this.ng = Vec3();
|
|
|
- let g = document.getElementById("fly-button");
|
|
|
+ /* let g = document.getElementById("fly-button");
|
|
|
g && (g.addEventListener("pointerdown", this.mg.bind(this)),
|
|
|
g.addEventListener("pointerup", this.Zg.bind(this)),
|
|
|
g.addEventListener("pointermove", this.Vg.bind(this)),
|
|
|
@@ -2181,12 +2217,12 @@ class Renderer {
|
|
|
}
|
|
|
)),
|
|
|
g.addEventListener("click", ( () => {}
|
|
|
- ))),
|
|
|
- this.Pg = g,
|
|
|
+ ))),
|
|
|
+ this.Pg = g,*/
|
|
|
this.vg = !1,
|
|
|
this.bg = 0,
|
|
|
this.zg = 1,
|
|
|
- this.isMobile || (document.getElementById("fly-button-container").style.display = "none"),
|
|
|
+ //this.isMobile || (document.getElementById("fly-button-container").style.display = "none"),
|
|
|
this._g(),
|
|
|
this.$g()
|
|
|
}
|
|
|
@@ -2315,8 +2351,8 @@ class Renderer {
|
|
|
AI() {
|
|
|
let A = applyMat4ToVec3(inverse([...this.right, 0, ...this.forward, 0, ...this.up, 0, ...this.center, 1]), this.eye);
|
|
|
this.radius = distance(this.eye, this.center),
|
|
|
- this.Mg = i(Math.atan2(A[1], A[0])),
|
|
|
- this.eg = i(Math.asin(A[2] / this.radius))
|
|
|
+ this.Mg = radToDeg(Math.atan2(A[1], A[0])),
|
|
|
+ this.eg = radToDeg(Math.asin(A[2] / this.radius))
|
|
|
}
|
|
|
oI() {
|
|
|
let A = normalize(h(this.center, this.eye))
|
|
|
@@ -2534,10 +2570,11 @@ class Renderer {
|
|
|
this.Pg.style.transform = ""
|
|
|
}
|
|
|
wI() {
|
|
|
+ return
|
|
|
this.Pg.style.visibility = this.Og && !this.iI() ? "hidden" : "visible"
|
|
|
}
|
|
|
}
|
|
|
- , m = 1e-6
|
|
|
+ /* , m = 1e-6
|
|
|
, Z = class {
|
|
|
constructor(A, g) {
|
|
|
let I = new URLSearchParams(document.location.search).has("configure");
|
|
|
@@ -2693,29 +2730,43 @@ export class Splatter extends THREE.EventDispatcher{
|
|
|
this.worldMat = identity(),
|
|
|
this.modelViewMat = identity(),
|
|
|
this.states = {}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
|
|
|
this.renderer = new Renderer(this.gl,this.dataset,this),
|
|
|
//this.renderer.onupdate = this.update.bind(this),
|
|
|
this.renderer.onupdate = () => {
|
|
|
this.dispatchEvent("update");
|
|
|
}
|
|
|
-
|
|
|
- //add
|
|
|
- this.position = new THREE.Vector3()
|
|
|
- this.rotationZ = 0
|
|
|
- this.originRotMat = new THREE.Matrix4()
|
|
|
- if(info.originGsData && info.rotateX){
|
|
|
- this.originRotMat.makeRotationX(info.rotateX) //add
|
|
|
- this.setTransform(this.originRotMat);
|
|
|
- }
|
|
|
- if(info.position){
|
|
|
- this.setPosition(info.position)
|
|
|
+ // this.kI = document.timeline.currentTime
|
|
|
+ /* this.controls = new Controls( viewer.renderer.domElement ),
|
|
|
+ this.controls.onupdate = this.update.bind(this),
|
|
|
+ this.controls.Sg = this.rA.bind(this) */
|
|
|
+ if(this.controls){
|
|
|
+ this.dataset.ready.then(( () => {
|
|
|
+ this.controls.setUp(this.dataset.upDirection),
|
|
|
+ //this.nI.position ? this.JI(this.nI.position) : this.controls.NA(this.dataset.defaultView),
|
|
|
+ this.controls.EI(),
|
|
|
+ //setInterval(this.KI.bind(this), 200),
|
|
|
+ //this.renderer.Cg(this.dataset.backgroundColor),
|
|
|
+ this.controls.ug = performance.now(),
|
|
|
+ this.update()
|
|
|
+ } ))
|
|
|
+ }else{
|
|
|
+ //add
|
|
|
+ this.position = new THREE.Vector3()
|
|
|
+ this.rotationZ = 0
|
|
|
+ this.originRotMat = new THREE.Matrix4()
|
|
|
+ if(info.originGsData && info.rotateX){
|
|
|
+ this.originRotMat.makeRotationX(info.rotateX) //add
|
|
|
+ this.setTransform(this.originRotMat);
|
|
|
+ }
|
|
|
+ if(info.position){
|
|
|
+ this.setPosition(info.position)
|
|
|
+ }
|
|
|
+ if(info.rotateZ){
|
|
|
+ this.setRotateZ(info.rotateZ)
|
|
|
+ }
|
|
|
}
|
|
|
- if(info.rotateZ){
|
|
|
- this.setRotateZ(info.rotateZ)
|
|
|
- }
|
|
|
viewer.inputHandler.addEventListener('keydown', (e)=>{
|
|
|
//if(e.target)
|
|
|
let key = e.event.key.toLowerCase()
|
|
|
@@ -2725,39 +2776,59 @@ export class Splatter extends THREE.EventDispatcher{
|
|
|
this.renderer.lodder.setDetail(1);
|
|
|
}
|
|
|
})
|
|
|
-
|
|
|
-
|
|
|
- /* this.controls = new X(this.canvas),
|
|
|
- this.controls.onupdate = this.update.bind(this),
|
|
|
- this.controls.Sg = this.rA.bind(this),
|
|
|
+ let detail = browser.urlHasValue('gsDetail',true)
|
|
|
+ detail && this.renderer.lodder.setDetail2(parseFloat(detail));
|
|
|
+
|
|
|
+
|
|
|
+ /*
|
|
|
this.LI = new Z(this,this.canvas), */
|
|
|
/* window.addEventListener("resize", this.update.bind(this)),
|
|
|
document.addEventListener("keyup", this.HI.bind(this)),
|
|
|
- this.dataset.ready.then(( () => {
|
|
|
- this.controls.setUp(this.dataset.upDirection),
|
|
|
- this.nI.position ? this.JI(this.nI.position) : this.controls.NA(this.dataset.defaultView),
|
|
|
- this.controls.EI(),
|
|
|
- setInterval(this.KI.bind(this), 200),
|
|
|
- this.renderer.Cg(this.dataset.backgroundColor),
|
|
|
- this.controls.ug = performance.now(),
|
|
|
- this.update()
|
|
|
- } )), */
|
|
|
- this.kI = document.timeline.currentTime,
|
|
|
- this.fI = !1,
|
|
|
- //this.update()
|
|
|
+ */
|
|
|
+
|
|
|
+ this.needRender = !1
|
|
|
+
|
|
|
//-----------
|
|
|
|
|
|
|
|
|
this.visible_ = true
|
|
|
+ //this.renderType2 = true
|
|
|
+
|
|
|
//this.bound = new THREE.Box3()
|
|
|
- viewer.addEventListener('render.end', ()=>{
|
|
|
- if(!this.visible)return
|
|
|
- this.render(viewer.mainViewport.camera/* , viewer.mainViewport.view.getPivot() */);
|
|
|
- })
|
|
|
|
|
|
- this.addEventListener('update', ()=>{
|
|
|
- viewer.dispatchEvent('content_changed')//触发渲染
|
|
|
- });
|
|
|
+ if( this.controls ){
|
|
|
+ viewer.paused = 1
|
|
|
+ viewer.addEventListener('loopStart1',(e)=>{
|
|
|
+ if(this.needRender){
|
|
|
+ this.render(viewer.mainViewport.camera, e.delta)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ viewer.addEventListener('camera_changed', e => {
|
|
|
+ this.update()
|
|
|
+ });
|
|
|
+
|
|
|
+ }else if(this.renderType2){
|
|
|
+ viewer.pauseRender = true
|
|
|
+ viewer.addEventListener('loopStart',(e)=>{
|
|
|
+ if(this.needRender){
|
|
|
+ this.render(viewer.mainViewport.camera, e.delta)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ viewer.addEventListener('camera_changed', e => {
|
|
|
+ this.update()
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ }else{
|
|
|
+ viewer.addEventListener('render.end', (e)=>{
|
|
|
+ if(!this.visible /* || e.viewport?.name != 'MainView' */)return
|
|
|
+ this.render(viewer.mainViewport.camera/* , viewer.mainViewport.view.getPivot() */);
|
|
|
+ })
|
|
|
+
|
|
|
+ this.addEventListener('update', ()=>{
|
|
|
+ viewer.dispatchEvent('content_changed')//触发渲染
|
|
|
+ });
|
|
|
+ }
|
|
|
viewer.splatter = this
|
|
|
}
|
|
|
|
|
|
@@ -2780,7 +2851,7 @@ export class Splatter extends THREE.EventDispatcher{
|
|
|
let g = this.gl
|
|
|
, I = A - this.kI;
|
|
|
this.kI = A,
|
|
|
- this.fI = !1,
|
|
|
+ this.needRender = !1,
|
|
|
//this.controls.animate(I);
|
|
|
//let B = this.resize();
|
|
|
this.camera.aA(B),
|
|
|
@@ -2794,44 +2865,77 @@ export class Splatter extends THREE.EventDispatcher{
|
|
|
this.update())
|
|
|
} */
|
|
|
transCamera(threeCamera, target=null) { //transCamera
|
|
|
+
|
|
|
+ //////////////////// */
|
|
|
multiply(threeCamera.matrixWorldInverse.elements, this.worldMat, this.modelViewMat),
|
|
|
this.camera.applyThreeCam(this.modelViewMat, threeCamera.projectionMatrix.elements),
|
|
|
target && (this.camera.center[0] = target.x,
|
|
|
this.camera.center[1] = target.y,
|
|
|
this.camera.center[2] = target.z);
|
|
|
}
|
|
|
- render(threeCamera, target=null) {
|
|
|
+ render(threeCamera, delta ) {
|
|
|
+ viewer.addTimeMark('renderGS','start')
|
|
|
+ //this.controls.animate(I);
|
|
|
+ //let B = this.resize();
|
|
|
+ let B = this.resize(); //根据scale 重设宽高,手机降分辨率
|
|
|
let I = this.gl;
|
|
|
- this.saveState(),
|
|
|
- this.transCamera(threeCamera, target),
|
|
|
+ this.saveState()
|
|
|
+ if(this.controls){
|
|
|
+ this.controls.animate(delta * 1000);
|
|
|
+ this.camera.aA(threeCamera.aspect),
|
|
|
+ this.camera.NA(this.controls.smooth.eye, this.controls.smooth.center, this.controls.up),
|
|
|
+ this.needRender = !1
|
|
|
+ I.clear(I.COLOR_BUFFER_BIT)
|
|
|
+
|
|
|
+ let C = 5 - (performance.now() - this.controls.ug) / 300;
|
|
|
+ C > 0 && (/* this.renderer.draw(this.camera, this.controls.center, 32 * this.scale, C, this.controls.iI() ? 1 : 0), */
|
|
|
+ this.update())
|
|
|
+ }else{
|
|
|
+ if(this.renderType2){
|
|
|
+
|
|
|
+ let view = viewer.mainViewport.view
|
|
|
+
|
|
|
+ this.camera.aA(B) ;
|
|
|
+ //this.camera.aA(threeCamera.aspect);
|
|
|
+ this.camera.NA(view.position.toArray(), view.getPivot().toArray(), this.dataset.upDirection)
|
|
|
+ I.clear(I.COLOR_BUFFER_BIT)
|
|
|
+ this.needRender = !1
|
|
|
+ }else{
|
|
|
+ this.transCamera(threeCamera/* , target */)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
I.enable(I.DEPTH_TEST),
|
|
|
I.depthMask(false),
|
|
|
this.renderer.render(this.camera, I.canvas.width, I.canvas.height),
|
|
|
this.restoreState();
|
|
|
+ viewer.addTimeMark('renderGS','end')
|
|
|
}
|
|
|
|
|
|
|
|
|
+ rA(A, g) {
|
|
|
+ let[I,B] = [A * this.scale / this.gl.canvas.width, 1 - g * this.scale / this.gl.canvas.height]
|
|
|
+ , C = this.renderer.sg(this.camera, [[I, B]]);
|
|
|
+ return null !== C[0] ? this.camera.getPos3d(I, B, C[0]) : null
|
|
|
+ }
|
|
|
+ update() {
|
|
|
+ //this.needRender|| (requestAnimationFrame(this.render.bind(this)),
|
|
|
+ this.needRender = !0//)
|
|
|
+ //this.dispatchEvent("update");
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
- /* update() {
|
|
|
- this.fI || (requestAnimationFrame(this.render.bind(this)),
|
|
|
- this.fI = !0)
|
|
|
- }
|
|
|
- resize() {
|
|
|
- let A = this.canvas
|
|
|
+ resize() {
|
|
|
+ let A = viewer.renderer.domElement
|
|
|
, g = Math.round(A.clientWidth * this.scale)
|
|
|
, I = Math.round(A.clientHeight * this.scale);
|
|
|
return A.width == g && A.height == I || (A.width = g,
|
|
|
A.height = I),
|
|
|
g / I
|
|
|
}
|
|
|
- rA(A, g) {
|
|
|
- let[I,B] = [A * this.scale / this.gl.canvas.width, 1 - g * this.scale / this.gl.canvas.height]
|
|
|
- , C = this.renderer.sg(this.camera, [[I, B]]);
|
|
|
- return null !== C[0] ? this.camera.rA(I, B, C[0]) : null
|
|
|
- }
|
|
|
+ /*
|
|
|
lI() {
|
|
|
let A = this.controls
|
|
|
, g = [A.center[0], A.center[1], A.center[2], A.Mg - 90, A.eg, Math.log2(A.radius)]
|
|
|
@@ -2949,10 +3053,11 @@ export class Splatter extends THREE.EventDispatcher{
|
|
|
let A = this.gl;
|
|
|
/* this.states.GL = saveGLState(A),
|
|
|
this.states.Texture = saveTextureState(A) */
|
|
|
- resetGLState(A);
|
|
|
+ resetGLState(A );
|
|
|
//viewer.addTimeMark('saveState','end')
|
|
|
}
|
|
|
restoreState() {//restoreState
|
|
|
+ if(this.renderType2 || this.controls) return
|
|
|
let A = this.gl;
|
|
|
//restoreTextureState(A, this.states.Texture);
|
|
|
restoreGLState(A, this.states.GL)
|
|
|
@@ -2984,6 +3089,8 @@ export class Splatter extends THREE.EventDispatcher{
|
|
|
this.setTransform(mat)
|
|
|
}
|
|
|
hitTest(threeCamera, mouse, I) {
|
|
|
+ if(browser.urlHasValue('stopHit'))return
|
|
|
+
|
|
|
viewer.addTimeMark('hitTest', 'start')
|
|
|
console.log('hitTest', Date.now() - lastHit),
|
|
|
lastHit = Date.now()
|
|
|
@@ -2998,7 +3105,7 @@ export class Splatter extends THREE.EventDispatcher{
|
|
|
mouses.push([A2[0] / this.gl.canvas.clientWidth, 1 - A2[1] / this.gl.canvas.clientHeight]);
|
|
|
}
|
|
|
this.saveState(),
|
|
|
- this.transCamera(threeCamera),
|
|
|
+ (this.renderType2 || this.controls) || this.transCamera(threeCamera),
|
|
|
this.renderer.options.alphaThreshold = (I == null ? void 0 : I.alphaThreshold) ?? 0.25;
|
|
|
let depths = this.renderer.getDepth(this.camera, mouses);
|
|
|
this.restoreState();
|