three.js动态扩散圆

主要就是用圆柱体的API,贴图过后,动态改变其scale就行了,下面是所用的图片,也是渐变的

   function transparentObject(geometry, material) {
            var obj = new THREE.Object3D();
            var mesh = new THREE.Mesh(geometry, material);
            mesh.material.side = THREE.BackSide; // back faces
            mesh.renderOrder = 0;
            obj.add(mesh);

            var mesh = new THREE.Mesh(geometry, material.clone());
            mesh.material.side = THREE.FrontSide; // front faces
            mesh.renderOrder = 1;
            obj.add(mesh);
            return obj
        }
        let url='../../images/ysThree/gradual_blue_01.png'
        const textureLoader = new THREE.TextureLoader();
        var map=textureLoader.load(url);
        map.repeat.x = 2;
        var geo = new THREE.CylinderGeometry(10, 10, 30, 50, 1, true);
        geo.translate(0, 15, 0);

        var material = new THREE.MeshStandardMaterial({
            transparent: true,
            map,
            opacity: 1,
        });
        let renderObject = transparentObject(geo, material);
        window.obj=renderObject
        scene.add(renderObject)

        function initControls() {
            const  controls = new THREE.OrbitControls(camera, renderer.domElement);
            // 如果使用animate方法时,将此函数删除
            //controls.addEventListener( 'change', render );
            // 使动画循环使用时阻尼或自转 意思是否有惯性
            controls.enableDamping = true;
            //动态阻尼系数 就是鼠标拖拽旋转灵敏度
            //controls.dampingFactor = 0.25;
            //是否可以缩放
            controls.enableZoom = true;
            //是否自动旋转
            controls.autoRotate = true;
            controls.autoRotateSpeed = 0.5;
            //设置相机距离原点的最远距离
            controls.minDistance = 1;
            //设置相机距离原点的最远距离
            //controls.maxDistance = 200;
            //是否开启右键拖拽
            controls.enablePan = true
            return controls
        }
        const  controls = initControls()

        function animate() {
            console.log('增加')
            renderObject.scale.x=renderObject.scale.x+0.01
            renderObject.scale.z=renderObject.scale.z+.01
            if(renderObject.scale.x>3){
                renderObject.scale.x=1
                renderObject.scale.z=1
            }
            controls.update()
            renderer.render(scene,camera)
            requestAnimationFrame(animate)
        }
        animate()

 

three.js中,可以使用环缓冲几何体(TorusGeometry)来创建扩散的效果。环缓冲几何体允许你通过调整参数来实现逐渐变化的效果。其中,可以使用radialSegments参数来控制环的分段数,从而实现从心逐渐渐变的效果。 在创建环缓冲几何体时,你可以通过调整radialSegments参数的值来改变环的分段数。分段数越多,环就会越平滑,从心开始逐渐渐变。你可以根据需要调整这个值,使得环的变化效果符合你的预期。 以下是使用TorusGeometry创建一个环的代码示例: const geometry = new THREE.TorusGeometry(100, 30, 16, 100); const material = new THREE.MeshLambertMaterial({ color: 0x00ffff, wireframe: true }); const mesh = new THREE.Mesh(geometry, material); 在这个示例中,我们设置了半径为100,管道半径为30,分段数为16,这样可以实现从心逐渐渐变的效果。你也可以根据需要调整这些参数的值,以实现你想要的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Threejs入门之七:Threejs中的几何体](https://blog.csdn.net/w137160164/article/details/129915643)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值