react-three-fiber 用于 Three.js 的 React 渲染器开源项目

我要开发同款
匿名用户2021年01月19日
19阅读
开发技术JavaScriptTypeScript
所属分类React开源项目、手机/移动开发
授权协议MIT

作品详情

react-three-fiber是针对Web和react-native上的threejs的React渲染器。

特点

使用可重用的组件以声明方式构建动态场景图,使Threejs的处理变得更加轻松,并使代码库更加整洁。这些组件对状态变化做出反应,具有开箱即用的交互性。

在threejs中工作的所有内容都将在这里工作。它不针对特定的Threejs版本,也不需要更新以修改,添加或删除上游功能。

渲染性能与threejs和GPU相仿。组件参与React之外的renderloop时,没有任何额外开销。

使用示例

importReactDOMfrom'react-dom'importReact,{useRef,useState}from'react'import{Canvas,useFrame}from'react-three-fiber'functionBox(props){//Thisreferencewillgiveusdirectaccesstothemeshconstmesh=useRef()//Setupstateforthehoveredandactivestateconst[hovered,setHover]=useState(false)const[active,setActive]=useState(false)//Rotatemesheveryframe,thisisoutsideofReactwithoutoverheaduseFrame(()=>{mesh.current.rotation.x=mesh.current.rotation.y+=0.01})return(<mesh{...props}ref={mesh}scale={active?[1.5,1.5,1.5]:[1,1,1]}onClick={(event)=>setActive(!active)}onPointerOver={(event)=>setHover(true)}onPointerOut={(event)=>setHover(false)}><boxBufferGeometryargs={[1,1,1]}/><meshStandardMaterialcolor={hovered?'hotpink':'orange'}/></mesh>)}ReactDOM.render(<Canvas><ambientLight/><pointLightposition={[10,10,10]}/><Boxposition={[-1.2,0,0]}/><Boxposition={[1.2,0,0]}/></Canvas>,document.getElementById('root'))

 

查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论