Просмотр исходного кода

3dModeling pulic.js 苏金阳 commit at 2021-04-06

苏金阳 4 лет назад
Родитель
Сommit
b0c158cbab
1 измененных файлов с 141 добавлено и 0 удалено
  1. 141 0
      3dModeling/sygy311/pulic.js

+ 141 - 0
3dModeling/sygy311/pulic.js

@@ -63,3 +63,144 @@ function enterFps(pos) {
             })
         );
     }
+}
+/**
+ * 说明:退出第一人称行走
+ */
+function exitFps() {
+    app.removeControl(fpsCtrl);
+    fpsCtrl = null;
+    cameraFly(cameraInitPos[0], cameraInitPos[1]);
+    // 恢复默认双击事件
+    app.resumeEvent(THING.EventType.DBLClick, '*', THING.EventTag.LevelEnterOperation);
+    // 恢复默认点击事件
+    app.resumeEvent(THING.EventType.Click, '*', THING.EventTag.LevelBackOperation);
+    // 恢复默认拾取事件
+    app.resumeEvent(THING.EventType.Pick, '*', THING.EventTag.LevelPickOperation);
+    // 恢复默认键盘键抬起事件
+    app.resumeEvent(THING.EventType.KeyUp, null, '空格键切换视角');
+    $('#moveByFps').removeClass('active');
+}
+/**
+ * 说明:开启小地图
+ */
+function createMiniMap() {
+    if (miniMapCtrl == null) {
+        // 添加小地图控件
+        miniMapCtrl = app.addControl(new THING.MiniMapControl({
+            width: 200,
+            height: 200,
+            position: THING.CornerType.LeftBottom,
+            opacity: 0.8,
+            scale: 1,
+            angle: 0,
+            mousewheel: true,
+            cameraViewImg: 'http://www.thingjs.com/static/images/minimap1.png',
+            cameraCenterImg: 'http://www.thingjs.com/static/images/minimap0.png'
+        }));
+        $('.minimap').css('border', '1px solid rgba(255, 255, 255, 0.8)');
+        $('.minimap').css('left', '3px');
+        $('.minimap').css('bottom', '3px');
+    } else {
+        destoryMiniMap();
+        createMiniMap();
+    }
+}
+/**
+ * 说明:关闭小地图
+ */
+function destoryMiniMap() {
+    if (miniMapCtrl != null) {
+        app.removeControl(miniMapCtrl);
+        miniMapCtrl = null;
+    }
+}
+/**
+ * 说明:全屏显示
+ */
+function fullScreen() {
+    let el = document.documentElement;
+    let rfs = el.requestFullScreen || el.webkitRequestFullScreen;
+    if (typeof rfs != "undefined" && rfs) {
+        rfs.call(el);
+    } else if (typeof window.ActiveXObject != "undefined") {
+        let wscript = new ActiveXObject("WScript.Shell");
+        if (wscript != null) {
+            wscript.SendKeys("{F11}");
+        }
+    }
+}
+/**
+ * 说明:退出全屏
+ */
+function exitFullScreen() {
+    let el = document;
+    let cfs = el.cancelFullScreen || el.webkitCancelFullScreen || el.exitFullScreen;
+    if (typeof cfs != "undefined" && cfs) {
+        cfs.call(el);
+    } else if (typeof window.ActiveXObject != "undefined") {
+        let wscript = new ActiveXObject("WScript.Shell");
+        if (wscript != null) {
+            wscript.SendKeys("{F11}");
+        }
+    }
+}
+/**
+ * 说明:摄像机飞行
+ */
+function cameraFly(position, target) {
+    // 摄像机飞行到某位置
+    app.camera.flyTo({
+        'position': position,
+        'target': target,
+        'time': 1000,
+        'complete': function () {
+        }
+    });
+}
+/**
+ * 说明:自动旋转
+ */
+function startRotate() {
+    app.camera.enableRotate = false;  // 关闭默认的旋转操作
+    app.camera.enablePan = false;  // 关闭默认的平移操作
+    app.camera.enableZoom = false;  // 关闭默认的缩放操作
+    // 绕摄像机当前目标点旋转
+    app.camera.rotateAround({
+        target: app.camera.target,  // 围绕摄像机当前目标点
+        // object: obj,  // 环绕的物体 (object 与 target 的设置互斥)
+        speed: 4,  // 环绕飞行的时间(3min)
+        yRotateAngle: 360,  // 环绕y轴飞行的旋转角度
+        loopType: THING.LoopType.Repeat  // 设置循环类型
+    });
+}
+/**
+ * 说明:停止自动旋转
+ */
+function stopRotate() {
+    app.camera.enableRotate = true;  // 开启默认的旋转操作
+    app.camera.enablePan = true;  // 开启默认的平移操作
+    app.camera.enableZoom = true;  // 开启默认的缩放操作
+    app.camera.stopRotateAround();
+    if (rotateTimer) {
+        clearTimeout(rotateTimer);
+        rotateTimer = null;
+    }
+}
+/**
+ * 说明:重新开始转动,未进行任何操作5s后开始自动旋转
+ */
+function restarRotate() {
+    if (fpsCtrl != null || !$('#sceneSetting .control-menu-pane li.autoRotate').hasClass('selected')) {
+        return;
+    }
+    if (rotateTimer == null) {
+        rotateTimer = setTimeout(function () {
+            //  startRotate();
+        }, restartTime);
+    } else {
+        clearTimeout(rotateTimer);
+        rotateTimer = null;
+        restarRotate();
+    }
+}