#
luxiaotao1123
2021-12-31 1bca763ee1fd55c6136557ac399c1a55672ecb72
#
2个文件已修改
1个文件已添加
48 ■■■■■ 已修改文件
static/js/app.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/js/object/ObjectSelect.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
views/index.html 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/js/app.js
@@ -45,6 +45,7 @@
            this.initStats();
            this.initLight();
            this.initReSize(this);
            this.initObjectSelect();
            this.initPointLockControl(this);
            this.initFloor();
            this.initBuilding();
@@ -178,6 +179,18 @@
                object.renderer.setSize(window.innerWidth, window.innerHeight);
            }, false);
        }
        this.initOutLine = function(){
            // this.outlinePass = new THREE.OutlinePass(new THREE.Vector2(window.innerWidth, window.innerWidth), this.scene, this.camera);
            // this.outlinePass.edgeStrength = 10;//包围线浓度
            // this.outlinePass.edgeGlow = 0.1;//边缘线范围
            // this.outlinePass.edgeThickness = 1;//边缘线浓度
            // this.outlinePass.pulsePeriod = 2;//包围线闪烁评率
            // this.outlinePass.visibleEdgeColor.set('#B31985');//包围线颜色
            // this.outlinePass.hiddenEdgeColor.set('#190a05');//被遮挡的边界线颜色
        }
        this.initObjectSelect = function(){
            new ObjectSelect(this.scene, this.camera);
        }
        this.initPointLockControl = function(object){
            this.controls = new PointerLockControls( this.camera, document.body );
            this.raycaster = new THREE.Raycaster( new THREE.Vector3(), new THREE.Vector3( 0, - 1, 0 ), 0,  50 );
static/js/object/ObjectSelect.js
New file
@@ -0,0 +1,30 @@
function ObjectSelect(_scene, _camera,outlinePass) {
    var raycaster = new THREE.Raycaster();
    var mouse = new THREE.Vector2();
    var selectedObjects = [];
    window.addEventListener( 'click', onMouseClick);
    function onMouseClick(event) {
        let x, y;
        if (event.changedTouches) {
            x = event.changedTouches[0].pageX;
            y = event.changedTouches[0].pageY;
        } else {
            x = event.clientX;
            y = event.clientY;
        }
        mouse.x = (x/ window.innerWidth) * 2 - 1;
        mouse.y = -(y/ window.innerHeight) * 2 + 1;
        raycaster.setFromCamera(mouse, _camera);
        var intersects = raycaster.intersectObjects([_scene], true);
        if (intersects.length === 0) {
            return;
        }
        let selectObject = intersects[0].object;
        console.log(selectObject)
    }
}
views/index.html
@@ -23,6 +23,7 @@
    <script type="text/javascript" src="../static/js/object/Route.js"></script>
    <script type="text/javascript" src="../static/js/object/CrnTask.js"></script>
    <script type="text/javascript" src="../static/js/object/Floor.js"></script>
    <script type="text/javascript" src="../static/js/object/ObjectSelect.js"></script>
</head>
<body>
@@ -234,8 +235,8 @@
    var speedDom = document.getElementById("speed");
    var timer = setInterval(function () {
        if (percent < 100.00) {
            percent += 0.04;
            // percent += 1;
            // percent += 0.04;
            percent += 1;
            speedDom.innerText = percent.toFixed(2);
        } else {
            speedDom.innerText = '100.00';