[three] | 基于 react + ts的三维组件开发示例

说明

抽空把cesium和threejs的api功能系统性的封装一下,抽象出几个组件供以后项目调用。

目前只封装了一些基础效果,还有一些高级分析,体渲染以及借鉴gis引擎的功能后面加进来。

新的  示例地址​​​​​​​ ​​​​​​​​​​​​​​目前没有开放(被扒怕了)

效果示例 ​​​​​​​

import React, { useEffect } from 'react'
import * as THREE from "three";
import Viewer from '../components/zt-three'

export default () => {


    const createApp = () => {

        const LoadScene = () => {

            const { sceneManager, resourceManager, graphicsManager } = viewer

            sceneManager.setSceneBackGround(resourceManager.SkyBox.Dark)

            sceneManager.setCustomGround({
                position: new THREE.Vector3(0, -1, 0)
            })

            graphicsManager.createLightTowerGraphics({
                position: new THREE.Vector3(0, 0, 0),
                color: new THREE.Color("yellow"),
                scale: 1
            })

        }

        const viewer = new Viewer({

            mapId: "map", // 容器id

            viewerType: "", // gis视图

            center: [120, 30], // 参考中心点

            logarithmicDepthBuffer: false, // 深度缓存

            controlsAnimation: false, // 相机旋转

            effectState: false, // 后处理

            datState: false, // dat.gui

            transformControlsState: false, // 拖动控件

            axesState: true, // 坐标轴,

            animation: (dalte) => { // 循环渲染回调函数

                console.log(dalte)
            },

            load: () => { // 初始化load场景

                viewer.cameraManager.updateCameraPosition({

                    position: new THREE.Vector3(50, 50, 50)
                })

                viewer.camera.lookAt(new THREE.Vector3(0, 0, 0));

                LoadScene()
            }
        })

        console.log(viewer)
    }

    useEffect(() => {
        createApp()
    })

    return <div id="map" style={{ width: '100vw', height: '100vh' }} > </div>
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值