精华内容
下载资源
问答
  • box3是在3D空间中表示一个盒子或立方体,其主要目的是为了表示对象的最小边界...一般加载的模型都是通过对象组合放在一个Group中的,因此想要获取模型的边界值就需要获取整个Group的最值。  使用box3的方法expandBy...

    box3是在3D空间中表示一个盒子或立方体,其主要目的是为了表示对象的最小边界框。 
    box3有两个属性maxmin分别是边框的最值。 
    min:表示盒子的下(x,y,z)的边界 
    max:表示盒子的上(x,y,z)的边界 

    获取Group的边界最值

    一般加载的模型都是通过对象组合放在一个Group中的,因此想要获取模型的边界值就需要获取整个Group的最值。 
    使用box3的方法expandByObject()参数是一个Object3D对象也即是Group对象或者是一个Mesh对象。 

    该方法返回一个Box3,因此可以获取边界最值。 
    同样也可以获取一组顶点或者一组向量以及一组标量的边界最值,方法如下,具体参考文档  

     

    展开全文
  • Three.js层级模型Group

    千次阅读 2019-11-09 11:30:52
    本文通过Three.js的一个类Group来介绍Threejs层级模型的概念,如果你对WebGL层级模型已经有一定的概念,直接把重点放在Group的了解上,如果没有层级模型的概念,就借着对Three.js APIGroup的介绍了解下该概念。...

    Three.js层级模型Group

    本文通过Three.js的一个类Group来介绍Threejs层级模型的概念,如果你对WebGL层级模型已经有一定的概念,直接把重点放在Group的了解上,如果没有层级模型的概念,就借着对Three.js APIGroup的介绍了解下该概念。

    这里以一个机器人三维模型来说下层级模型的概念,比如一整个机器人通过一个组对象Group表示,然后一条腿用一个组对象Group表示,一条腿假设包含大腿和小腿两个网格模型Mesh,大腿和小腿两个网格模型可以作为父对象腿Group的两个字对象,Group表示的两条腿又可以作为机器人Group的两个子对象,这样的话就构成了机器人——腿——大腿、小腿三个层级,就像一颗树一样可以一直分叉,如果根对象机器人的位置变化,那么腿也会跟着变化。对于Threejs中一样,如果MeshGroup的子对象,如果Group平移变化,Mesh的位置同样跟着父对象Group平移变化。

    Group的基类是Object3D,自然Group的方法和属性可以查看文档中Object3D的介绍。在Three.js编程指南中会通过Object3D创建一个父对象,这两个类用哪个都行,Group相比较Object3D更语义化,建议使用Group作为点、线、网格等模型的父对象,用来构建一个层级模型。

    .add()方法

    如果你已经有一定的Threejs基础,那么一定不陌生场景对象Scene的方法.add(),用来把模型对象、光源对象添加到场景中。

    组对象Group和场景对象Scene一样,.add()方法都继承自基类Object3D

    var mesh = new THREE.Mesh();
    var group = new THREE.Group();
    //网格模型添加到组中,网格模型是group的子对象
    group.add(mesh);
    //group添加到场景中,group作为场景对象的子对象
    scene.add(group);
    

    调用Threejs的API手动创建一个机器人层级模型,可以通过.log()在浏览器控制台查看机器人personGroup的结构,通过.children属性可以查看访问父对象的所有子对象。

    // 头部网格模型和组
    var headMesh = sphereMesh(10, 0, 0, 0);
    headMesh.name = "脑壳"
    var leftEyeMesh = sphereMesh(1, 8, 5, 4);
    leftEyeMesh.name = "左眼"
    var rightEyeMesh = sphereMesh(1, 8, 5, -4);
    rightEyeMesh.name = "右眼"
    var headGroup = new THREE.Group();
    headGroup.name = "头部"
    headGroup.add(headMesh, leftEyeMesh, rightEyeMesh);
    // 身体网格模型和组
    var neckMesh = cylinderMesh(3, 10, 0, -15, 0);
    neckMesh.name = "脖子"
    var bodyMesh = cylinderMesh(14, 30, 0, -35, 0);
    bodyMesh.name = "腹部"
    var leftLegMesh = cylinderMesh(4, 60, 0, -80, -7);
    leftLegMesh.name = "左腿"
    var rightLegMesh = cylinderMesh(4, 60, 0, -80, 7);
    rightLegMesh.name = "右腿"
    var legGroup = new THREE.Group();
    legGroup.name = "腿"
    legGroup.add(leftLegMesh, rightLegMesh);
    var bodyGroup = new THREE.Group();
    bodyGroup.name = "身体"
    bodyGroup.add(neckMesh, bodyMesh, legGroup);
    // 人Group
    var personGroup = new THREE.Group();
    personGroup.name = "机器人"
    personGroup.add(headGroup, bodyGroup)
    personGroup.translateY(50)
    scene.add(personGroup);
    
    console.log('控制台查看机器人结构',personGroup);
    

    递归遍历方法.traverse()

    Threejs层级模型就是一个树结构,可以通过递归遍历的算法去遍历Threejs一个模型对象的所有后代,可以通过下面代码递归遍历上面创建一个机器人模型或者一个外部加载的三维模型。

    scene.traverse(function(obj) {
      if (obj.type === "Group") {
        console.log(obj.name);
      }
      if (obj.type === "Mesh") {
        console.log('  ' + obj.name);
        obj.material.color.set(0xffff00);
      }
      if (obj.name === "左眼" | obj.name === "右眼") {
        obj.material.color.set(0x000000)
      }
      // 打印id属性
      console.log(obj.id);
      // 打印该对象的父对象
      console.log(obj.parent);
      // 打印该对象的子对象
      console.log(obj.children);
    })
    

    查找某个具体的模型

    Threejs和前端DOM一样,可以通过一个方法查找某个模型对象,对于普通前端而言可以通过name或id等方式查找一个或多个HTML元素,Threejs同样可以通过一些方法查找一个模型书中的某个节点。

    // 遍历查找对象的子对象,返回name对应的对象(name是可以重名的,返回第一个)
    var nameNode = scene.getObjectByName ( "左腿" );
    nameNode.material.color.set(0xff0000);
    // 遍历查找对象的子对象,并返回id对应的对象
    var idNode = scene.getObjectById ( 4 );
    console.log(idNode);
    

    本文转载地址:我的个人技术博客

    展开全文
  • 模型居中 让模型居中的方法最简单了,直接给geometry调用center()方法就实现了,模型居中显示。 //让图形居中显示 geom.center(); 获取模型的最小大小 获取模型最下的大小的原理就是获取x,y,z每个轴上面...

    模型居中

    让模型居中的方法最简单了,直接给geometry调用center()方法就实现了,模型居中显示。

            //让图形居中显示
            geom.center();

    获取模型的最小大小

    获取模型最下的大小的原理就是获取x,y,z每个轴上面所有顶点的最大值和最小值,通过这些值进行计算,获取模型每个轴上面的大小。
    three.js已经给我们准备了相关的属性进行获取。步骤如下
    - 首先调用让几何体计算当前盒子范围geomtery.computeBoundingBox()的方法。
    - 然后,会在geometry对象里面,获取到boundingBox属性,这个属性是一个box3对象,包含maxmin两个Vector3对象。max则代表模型每个轴最大的值,min则是模型每个轴最小的值。

    {
        "min":{
            "x":-411.5179967880249,
            "y":-226.37235260009766,
            "z":-52
        },
        "max":{
            "x":411.5179967880249,
            "y":226.37235260009766,
            "z":52
        }
    }

    获取场景组group的最小大小

    上面稍微说了一下box3对象,这里如果需要获取整个group的最小大小,还是需要使用该对象去实现。

    var box = new THREE.Box3();
    //通过传入的object3D对象来返回当前模型的最小大小,值可以使一个mesh也可以使group
    box.expandByObject(group);

    上面是获取一个模型的最小大小的方法,并且还能获取场景组group
    我们还能通过一组顶点来获取:

    box.expandByPoint(vertexs);

    用途

    我们能通过这些数据获取当前的模型的大小,通过调整大小让窗口显示模型在合理的位置。
    还可以直接让模型居中,比如通过调用box.getCenter来获取当前模型的中心点。用于模型展示。

    案例代码

    这个案例还是用的前几节的svg拉伸的代码,只不过是之间都是自己设置居中,现在是直接让模型居中。
    这里写图片描述

    查看案例效果:http://www.wjceo.com/blog/threejs/2018-02-12/52.html

    以下是代码,可以在createMesh方法内,看设置

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style type="text/css">
            html, body {
                margin: 0;
                height: 100%;
            }
    
            canvas {
                display: block;
            }
    
        </style>
    </head>
    <body onload="draw();">
    <div id="batman" style="display:none;">
        <svg version="1.0" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1152px" height="1152px" xml:space="preserve">
    <g>
    <path  id="batman-path" style="fill:rgb(0,0,0);" d="M 261.135 114.535 C 254.906 116.662 247.491 118.825 244.659 119.344 C 229.433 122.131 177.907 142.565 151.973 156.101 C 111.417 177.269 78.9808 203.399 49.2992 238.815 C 41.0479 248.66 26.5057 277.248 21.0148 294.418 C 14.873 313.624 15.3588 357.341 21.9304 376.806 C 29.244 398.469 39.6107 416.935 52.0865 430.524 C 58.2431 437.23 63.3085 443.321 63.3431 444.06 C 63.4748 446.883 102.278 479.707 120.51 492.418 C 131.003 499.734 148.168 509.93 158.654 515.075 C 169.139 520.22 179.431 525.34 181.524 526.454 C 187.725 529.754 187.304 527.547 179.472 515.713 C 164.806 493.553 158.448 464.659 164.322 446.861 C 169.457 431.303 192.013 421.501 214.324 425.132 C 234.042 428.341 252.142 439.186 270.958 459.064 C 286.677 475.67 292.133 482.967 295.31 491.634 C 297.466 497.514 298.948 495.91 304.862 481.293 C 313.673 459.519 329.808 445.735 346.35 445.851 C 367.654 446 399.679 478.239 412.801 512.745 C 414.093 516.144 416.593 522.632 418.355 527.163 C 420.118 531.695 423.604 542.319 426.103 550.773 C 430.848 566.832 432.355 566.851 434.872 550.88 C 436.395 541.215 451.403 502.522 455.655 497.298 C 457.038 495.599 460.63 489.896 463.636 484.625 C 471.696 470.498 492.318 452.688 505.387 448.568 C 514.602 445.663 517.533 445.549 525.51 447.782 C 539.676 451.749 553.43 467.773 560.706 488.788 L 563.242 496.114 L 567.096 490.012 C 577.709 473.208 593.665 453.899 602.47 447.206 C 607.884 443.09 613.378 438.825 614.679 437.729 C 615.98 436.632 622.927 433.259 630.118 430.233 C 655.159 419.693 681.195 423.407 693.273 439.241 C 697.957 445.382 698.932 448.971 699.538 462.294 C 700.174 476.284 699.51 479.864 693.686 493.854 C 690.073 502.533 684.912 512.883 682.217 516.854 C 679.523 520.825 678.172 524.074 679.215 524.074 C 681.932 524.074 718.787 504.481 732.525 495.734 C 760.018 478.228 788.909 452.599 803.9 432.418 C 807.266 427.886 810.569 423.715 811.239 423.149 C 814.498 420.395 828.253 393.099 833.17 379.627 C 838.223 365.782 838.713 361.822 838.741 334.582 C 838.776 300.425 836.431 291.124 820.154 260.873 C 810.649 243.207 807.498 239.005 788.417 218.543 C 751.511 178.968 688.147 142.549 621.582 122.654 C 581.7 110.734 580.388 110.465 580.388 114.195 C 580.388 115.328 581.302 116.255 582.418 116.255 C 584.279 116.255 587.705 122.106 603.399 152.085 C 613.977 172.29 618.077 189.427 618.264 214.21 C 618.42 234.928 617.88 238.368 612.285 252.269 C 604.327 272.04 590.066 286.889 572.829 293.352 C 558.526 298.714 549.193 297.86 535.704 289.955 C 526.777 284.723 512.304 267.644 509.816 259.404 C 509.132 257.138 507.129 251.358 505.366 246.558 C 503.602 241.759 501.646 231.564 501.018 223.902 C 500.39 216.24 498.491 198.402 496.797 184.261 C 495.104 170.121 493.307 152.047 492.803 144.097 C 492.299 136.147 491.292 125.625 490.565 120.715 L 489.242 111.787 L 483.323 118.267 C 480.067 121.832 477.404 125.618 477.404 126.681 C 477.404 127.744 476.603 128.613 475.624 128.613 C 474.645 128.613 471.275 132.321 468.135 136.852 L 462.426 145.091 L 431.038 145.091 L 399.65 145.091 L 386.811 128.494 C 379.749 119.365 373.509 112.36 372.943 112.926 C 372.377 113.491 371.57 118.875 371.15 124.888 C 370.73 130.902 368.94 147.744 367.172 162.315 C 365.405 176.887 363.523 195.424 362.99 203.509 C 360.283 244.622 352.784 266.044 335.323 282.544 C 326.456 290.923 312.488 297.497 303.508 297.518 C 294.864 297.539 278.732 290.063 269.473 281.748 C 246.952 261.521 238.846 229.614 245.481 187.314 C 247.894 171.928 266.562 131.612 275.927 121.56 C 277.987 119.348 279.673 116.786 279.673 115.867 C 279.673 114.947 279.905 113.593 280.188 112.856 C 281.28 110.017 271.977 110.837 261.136 114.536 L 261.135 114.535 "/>
    </g>
    
    </svg>
    </div>
    </body>
    <script src="https://johnson2heng.github.io/three.js-demo/lib/three.js"></script>
    <script src="https://johnson2heng.github.io/three.js-demo/lib/js/libs/d3-threeD.js"></script>
    <script src="https://johnson2heng.github.io/three.js-demo/lib/js/controls/OrbitControls.js"></script>
    <script src="https://johnson2heng.github.io/three.js-demo/lib/js/libs/stats.min.js"></script>
    <script src="https://johnson2heng.github.io/three.js-demo/lib/js/libs/dat.gui.min.js"></script>
    <script>
        var renderer;
        function initRender() {
            renderer = new THREE.WebGLRenderer({antialias:true});
            //renderer.setClearColor(new THREE.Color(0xEEEEEE, 1.0)); //设置背景颜色
            renderer.setSize(window.innerWidth, window.innerHeight);
            document.body.appendChild(renderer.domElement);
        }
    
        var camera;
        function initCamera() {
            camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 1, 10000);
            camera.position.set(0, 0, 1500);
        }
    
        var scene;
        function initScene() {
            scene = new THREE.Scene();
        }
    
        var light;
        function initLight() {
            scene.add(new THREE.AmbientLight(0x404040));
    
            light = new THREE.DirectionalLight(0xffffff);
            light.position.set(1,1,1);
            scene.add(light);
        }
    
        function initModel() {
            //轴辅助 (每一个轴的长度)
            object = new THREE.AxesHelper(500);
            scene.add(object);
        }
    
        //生成2d图形
        function drawShape() {
    
    
            var svgString = document.querySelector("#batman-path").getAttribute("d");
    
            var shape = transformSVGPathExposed(svgString);
    
            // 返回shape
            return shape;
        }
    
        //生成模型
        function createMesh(geom) {
    
            //设置当前的模型矩阵沿xy轴偏移,让图片处于显示中心
            //geom.applyMatrix(new THREE.Matrix4().makeTranslation(-450, -300, 0));
    
            //更新当前几何体的相关盒子模型数据如果设置居中会居中方法内部调用。
            //geom.computeBoundingBox();
    
            //让图形居中显示
            geom.center();
    
            //获取模型的大小
            console.log(JSON.stringify(geom.boundingBox));
    
            // 创建法向量纹理
            var meshMaterial = new THREE.MeshNormalMaterial({
                flatShading: THREE.FlatShading,
                transparent: true,
                opacity: 0.7
            });
    
            //  创建一个线框纹理
            var wireFrameMat = new THREE.MeshBasicMaterial();
            wireFrameMat.wireframe = true;
    
            // 创建模型
            var mesh = THREE.SceneUtils.createMultiMaterialObject(geom, [meshMaterial,wireFrameMat]);
    
            //由于图形时反的,让图形翻个个
            mesh.rotation.z = Math.PI;
    
            return mesh;
        }
    
        //初始化性能插件
        var stats;
        function initStats() {
            stats = new Stats();
            document.body.appendChild(stats.dom);
        }
    
        //用户交互插件 鼠标左键按住旋转,右键按住平移,滚轮缩放
        var controls;
        function initControls() {
    
            controls = new THREE.OrbitControls( camera, renderer.domElement );
    
            // 如果使用animate方法时,将此函数删除
            //controls.addEventListener( 'change', render );
            // 使动画循环使用时阻尼或自转 意思是否有惯性
            controls.enableDamping = true;
            //动态阻尼系数 就是鼠标拖拽旋转灵敏度
            //controls.dampingFactor = 0.25;
            //是否可以缩放
            controls.enableZoom = true;
            //是否自动旋转
            controls.autoRotate = false;
            //设置相机距离原点的最远距离
            controls.minDistance  = 20;
            //设置相机距离原点的最远距离
            controls.maxDistance  = 10000;
            //是否开启右键拖拽
            controls.enablePan = true;
        }
    
        //生成gui设置配置项
        var gui,shape;
        function initGui() {
            //声明一个保存需求修改的相关数据的对象
            gui = {
                amount:100,
                bevelThickness:2,
                bevelSize:0.5,
                bevelEnabled:true,
                bevelSegments:3,
                curveSegments:12,
                steps:1,
                asGeom:function () {
                    // 删除旧的模型
                    scene.remove(shape);
                    // 创建一个新的
                    var options = {
                        amount: gui.amount,
                        bevelThickness: gui.bevelThickness,
                        bevelSize: gui.bevelSize,
                        bevelSegments: gui.bevelSegments,
                        bevelEnabled: gui.bevelEnabled,
                        curveSegments: gui.curveSegments,
                        steps: gui.steps
                    };
    
                    shape = createMesh(new THREE.ExtrudeGeometry(drawShape(), options));
                    // 将模型添加到场景当中
                    scene.add(shape);
                }
            };
            var datGui = new dat.GUI();
            //将设置属性添加到gui当中,gui.add(对象,属性,最小值,最大值)
            datGui.add(gui, 'amount', 0, 200).onChange(gui.asGeom);
            datGui.add(gui, 'bevelThickness', 0, 10).onChange(gui.asGeom);
            datGui.add(gui, 'bevelSize', 0, 10).onChange(gui.asGeom);
            datGui.add(gui, 'bevelSegments', 0, 30).step(1).onChange(gui.asGeom);
            datGui.add(gui, 'bevelEnabled').onChange(gui.asGeom);
            datGui.add(gui, 'curveSegments', 1, 30).step(1).onChange(gui.asGeom);
            datGui.add(gui, 'steps', 1, 5).step(1).onChange(gui.asGeom);
    
            //调用生成一次图形
            gui.asGeom();
        }
    
        function render() {
            renderer.render( scene, camera );
        }
    
        //窗口变动触发的函数
        function onWindowResize() {
            camera.aspect = window.innerWidth / window.innerHeight;
            camera.updateProjectionMatrix();
            render();
            renderer.setSize( window.innerWidth, window.innerHeight );
    
        }
    
        function animate() {
            //更新控制器
            controls.update();
            render();
    
            //更新性能插件
            stats.update();
            requestAnimationFrame(animate);
        }
    
        function draw() {
            initRender();
            initScene();
            initCamera();
            initLight();
            initModel();
            initControls();
            initStats();
            initGui();
    
            animate();
            window.onresize = onWindowResize;
        }
    </script>
    </html>
    展开全文
  • Open Group 对面向服务采用的成熟度模型进行了标准化:Open Service Integration Maturity Model(OSIMM)
  • 部分线性模型的adaptive group lasso变量选择,牛银菊,,本文对部分线性模型的aglasso (adaptive group lasso)参数估计及变量选择进行研究。构造了aglasso惩罚最小二乘估计,研究了在一定条件下估计�
  • Three.js组对象Group、层级模型

    千次阅读 2019-12-01 19:10:33
    组对象Group、层级模型 本文是Three.js电子书的6.1节 本节课的目的是为了大家建立层级模型的概念,所谓层级模型,比如一个机器人,人头、胳膊都是人的一部分,眼睛是头的一部分,手是个胳膊的一部分,手指是手的一...

    组对象Group、层级模型

    本文是Three.js电子书的6.1节

    本节课的目的是为了大家建立层级模型的概念,所谓层级模型,比如一个机器人,人头、胳膊都是人的一部分,眼睛是头的一部分,手是个胳膊的一部分,手指是手的一部分…这样的话就构成一个一个层级结构或者说树结构。

    Group案例

    在详细讲解层级模型之前先通过Threejs的类Group实现一个网格模型简单的案例。

    下面代码代码创建了两个网格模型mesh1、mesh2,通过THREE.Group类创建一个组对象group,然后通过add方法把网格模型mesh1、mesh2作为设置为组对象group的子对象,然后在通过执行scene.add(group)把组对象group作为场景对象的scene的子对象。也就是说场景对象是scene是group的父对象,group是mesh1、mesh2的父对象。这样就构成了一个三层的层级结构,当然了你也可以通过Group自己创建新模型节点作为层级结构中的一层。

    //创建两个网格模型mesh1、mesh2
    var geometry = new THREE.BoxGeometry(20, 20, 20);
    var material = new THREE.MeshLambertMaterial({color: 0x0000ff});
    var group = new THREE.Group();
    var mesh1 = new THREE.Mesh(geometry, material);
    var mesh2 = new THREE.Mesh(geometry, material);
    mesh2.translateX(25);
    //把mesh1型插入到组group中,mesh1作为group的子对象
    group.add(mesh1);
    //把mesh2型插入到组group中,mesh2作为group的子对象
    group.add(mesh2);
    //把group插入到场景中作为场景子对象
    scene.add(group);
    

    网格模型mesh1、mesh2作为设置为父对象group的子对象,如果父对象group进行旋转、缩放、平移变换,子对象同样跟着变换,就像你的头旋转了,眼睛会跟着头旋转。

    //沿着Y轴平移mesh1和mesh2的父对象,mesh1和mesh2跟着平移
    group.translateY(100);
    
    //父对象缩放,子对象跟着缩放
    group.scale.set(4,4,4);
    
    //父对象旋转,子对象跟着旋转
    group.rotateY(Math.PI/6)
    

    查看子对象.children

    Threejs场景对象Scene、组对象Group都有一个子对象属性.children,通过该属性可以访问父对象的子对象,子对象属性.children的值是数组,所有子对象是数组的值,你可以在浏览器控制台打印测试上面案例代码。

    执行console.log(group.children)你可以在浏览器控制控制看到group的子对象是案例代码中通过add方法添加的两个网格模型对象Mesh。

    console.log('查看group的子对象',group.children);
    

    场景对象结构

    执行console.log(scene.children)你在浏览器控制台查看场景对象Scene的子对象,除了可以看到案例代码通过add方法添加的组对象group之外,还可以看到通过add方法插入到场景中的环境光AmbientLight、点光源PointLight、辅助坐标对象AxesHelper等子对象。

    console.log('查看Scene的子对象',scene.children);
    

    场景对象对象scene构成的层级模型本身是一个树结构,场景对象层级模型的第一层,也就是树结构的根节点,一般来说网格模型Mesh、点模型Points、线模型Line是树结构的最外层叶子结点。构建层级模型的中间层一般都是通过Threejs的Group类来完成,Group类实例化的对象可以称为组对象。

    根节点scene group group group Mesh/Line/Points group Mesh/Line/Points group group Mesh/Line/Points Mesh/Line/Points Light

    Threejs渲染的时候从根节点场景对象开始解析渲染,如果一个模型要想被渲染出来就要直接或间接插入到场景scene中,一个光源如果要在光照计算中起作用同样需要通过add方法插入到场景中。

    .add()方法

    场景对象Scene、组对象Group、网格模型对象Mesh、光源对象Light.add()方法都是继承自它们共同的基类Object3D

    父对象执行.add()方法的本质就是把参数中的子对象添加到自身的子对象属性.children中。

    .add()方法可以单独插入一个对象,也可以同时插入多个子对象。

    group.add(mesh1);
    group.add(mesh2);
    
    group.add(mesh1,mesh2);
    

    Scene根节点 渲染的问题

    .remove()方法

    .add()方法是给父对象添加一个子对象,.remove()方法是删除父对象中的一个子对象。
    一个对象的全部子对象可以通过该对象的.children()属性访问获得,执行该对象的删除方法.remove()和添加方法.add()一样改变的都是父对象的.children()属性。

    场景Scene或组对象Group.remove()方法使用规则可以查看它们的基类Object3D

    // 删除父对象group的子对象网格模型mesh1
    group.add(mesh1)
    // 一次删除场景中多个对象
    scene.remove(light,group)
    
    展开全文
  • 2020年1月20日,The Open Group正式发布《定义IT运营模型》,本白皮书基于已发布的指南提出了一个“IT运营模型”的标准定义。基于Andrew Campbell等人的运营模型画布以及Osterwalder的业务模型画布的工作,我们把IT...
  • DSCI 525的Group8项目-Web和云计算,是UBC数据科学硕士课程的一部分。 该项目的目标是建立和部署集成机器学习模型,以预测澳大利亚的每日降雨量。 作为课程目标的一部分,我们将研究在计算机上工作的局限性以及在云...
  • 2020年1月20日,The Open Group正式发布《定义IT运营模型》,本白皮书基于已发布的指南提出了一个“IT运营模型”的标准定义。基于Andrew Campbell等人的运营模型画布以及Osterwalder的业务模型画布的工作,我们把IT...
  • groupBy 和 having 方法可用来对查询结果进行分组。having 方法的用法和 where 方法类似: $users = DB::table('users') ->groupBy('account_id') ->having('account_id', '>', 100) ->get(); 网上去查,发现一个...
  • //从这射线返回的mesh上获取上级的group //如果多层group嵌套需要递归到最上层 _selected = intersects[ 0 ].object.parent;//这里加上.parent console.log(_selected); if ( _raycaster.ray....
  • MEng-Y3-Group-Project-:医学教育的人眼3D动力学模型
  • 问题描述:再重新训练自己的数据集以后,保存的h5模型在读取时出现Cannot create group in read only mode.的错误,通过查询发现是在模型保存时的错误,在保存时使用了model.save_weights。改为save就可以了。 ...
  • 如,将一个有三个group分别为skin,left_eye,Right_eye的三维人脸模型在3dmax中到出时选择将其合并为一个模型之后,新生成的模型只有一个group,而且原来的顶点顺序也会改变, 比如原来的模型中,第一个顶点...
  • Group-Transformer:通过对特征进行分组来缩小 Transformer 组转换器的Pytorch正式实现可适应按组计算而不减小特征尺寸或网络深度。 有关更多详细信息,请参阅论文“通过分组特征为轻量级字符级语言模型 (COLING-...
  • Laravel 5.5 Linux mint 18 PHPStorm 最近刚玩Laravel,手册源码还没来得及看完就跃跃欲试做了个小...groupBy 和 having 方法可用来对查询结果进行分组。having 方法的用法和 where 方法类似: $users = DB::table
  • kaggle-Otto-Group-Competition-NNs-Model- 此 Kaggle otto 小组比赛的链接如下: : 这是我们团队用来与 xgb 模型结合的最佳神经网络模型。 单个 NN 模型可以给出大约 0.44(logloss)的排行榜,而 10NN 的简单...
  • 参与贡献的小组活动识别的时间动态模型。 我们举一个一般的DMS(d ATA,男奥德尔,S奥尔弗)为PCTDM代码框架,通过Pytorch impelemented。 您可以通过轻松修改Configs的文件,将新模型或数据集应用到此框架中! 有关...
  • 例如, auth.User模型位于auth.Group模型之前。 从应用列表中排除任何模型。 例如,从应用程序列表中排除auth.Group 。 请注意,这仅将模型从应用列表中排除,并且不能保护其免受通过URL的访问。 来自多个应用...
  • 彻底搞懂Reactor模型和Proactor模型

    千次阅读 2019-08-05 08:00:00
    在高性能的I/O设计中,有两个著名的模型:Reactor模型和Proactor模型,其中Reactor模型用于同步I/O,而Proactor模型运用于异步I/O操作。 想要了解两种模型,需要了解一些IO、同步异步的基础知识,点击查看 服务端...
  • seid=7224169471719308503深度学习被引起关注是在2012年用神经网络训练的一个分类模型在ImagNet上取得了第一名,而且其分类精度比第二名高出10多个点,当时所使用的模型为AlexNet,现在看来其为一个比较简...
  • 把Caffe的模型转换为Pytorch模型

    千次阅读 多人点赞 2019-03-22 17:14:16
    本文将介绍从Caffe模型转为Pytorch模型的方法。详细介绍了Caffe中的卷积层、BatchNorm层的参数和对应的Pytorch代码。 把Caffe模型转换为pytorch模型 把Caffe模型转换为keras模型 把Caffe模型转换为tensorflow模型
  • Django 2.1.3 模型模型

    千次阅读 2018-11-17 18:04:35
    模型1.快速上手2.使用模型3.字段字段类型字段选项自动设置主键备注名关联关系多对一多对多多对多关系中额外字段一对一4.跨app引用模型5.字段名称限制 -- 译自官方文档+自己的理解 -- 模型是您的数据唯一而且准确的...
  • 深度学习模型优化+模型蒸馏+模型压缩 、https://blog.csdn.net/shentanyue/article/details/83539382 经典论文: (1)Distilling the Knowledge in a Neural Network 地址:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 180,434
精华内容 72,173
关键字:

group模型