首页 > 其他分享 >Three.js

Three.js

时间:2024-07-04 11:43:51浏览次数:23  
标签:sizes Three js window camera client tick Math

右手坐标系
//每秒转一圈

const clock = new THREE.Clock()
function tick() {
    const time = clock.getElapsedTime()
    mesh.rotation.y = time * Math.PI * 2 //一秒转一圈
    renderer.render(scene, camera)
    window.requestAnimationFrame(tick)
}
tick()

image

const client = {
    x: 0,
    y: 0
}

canvas.addEventListener('mousemove', (e) => {
    client.x = (e.clientX / sizes.width - 0.5);
    client.y = -(e.clientY / sizes.height - 0.5);
})


const tick = () =>
{
    // Update objects
    camera.position.x = Math.sin(client.x * Math.PI * 2) * 3;
    camera.position.z = Math.cos(client.x * Math.PI * 2) * 3
    camera.position.y = client.y * 5;
    camera.lookAt(mesh.position)
	
    // Render
    renderer.render(scene, camera)

    // Call tick again on the next frame
    window.requestAnimationFrame(tick)
}

tick()

canvas 可以动态占满可视区

window.addEventListener('resize', () => {
    sizes.width = window.innerWidth
    sizes.height = window.innerHeight
    camera.aspect = sizes.width / sizes.height
    camera.updateProjectionMatrix()
    renderer.setSize(sizes.width, sizes.height)
})

.webgl {
  position: fixed; //隐藏滚动条
  top: 0;
  left: 0;
  overflow: hidden; //隐藏笔记本触摸板上滑底部有白块
}

Sets device pixel ratio. This is usually used for HiDPI device to prevent blurring output canvas.
image
image
image

renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2))

标签:sizes,Three,js,window,camera,client,tick,Math
From: https://www.cnblogs.com/tangshidedabenniao/p/18280051

相关文章

  • nodejs删除和重新安装
    若重新安装nodejs本人使用卸载并重新安装的方法,简单暴力卸载1.找到以前安装nodejs的文件路径,直接删除2.例如我的在D盘路径,直接卸载3.然后删除配置环境:右键此电脑——属性——高级系统设置——高级——环境变量4.找到用户变量在path关于node与npm并删除5.系统变......
  • js 深度对象筛选器
    要实现JavaScript深度对象筛选器,可以使用filter()方法结合自定义的过滤函数来处理对象数组。以下是一个示例,假设有一个包含用户信息的对象数组,需要筛选出满足特定条件的用户:constusers=[{id:1,name:'Alice',age:25,hobbies:['reading','usic']},{i......
  • vue3+node.js+mysql+electron+express实现用户登录,文章写入删除,全量更新,增量更新,和截
    第一件事情是安装node.js,去官网下,在终端node-v,npm-v有版本号就行了,不必搞环境配置,保姆级别教程,感谢哥有时间。嘻嘻,祝大家开心。1.首先你要创建electron项目打开vscode,新建终端输入代码npminit这个代码是初始化的意思会生成一个文件package.json里面的代码应该是这......
  • 【Node.JS】入门
    文章目录Node.js的入门涉及对其基本概念、特点、安装、以及基本使用方法的了解。以下是对Node.js入门的详细介绍:一、Node.js基本概念和特点定义:Node.js是一个基于ChromeV8引擎的JavaScript运行环境,它使得JavaScript能够运行在服务器端。特点:轻量级:采用事件驱动......
  • JSOI2017 代码
    \(\text{JSOI2017day1t1代码}\)题解设\(d_i\)表示长度为\(i\)的库函数数量,\(h_i\)表示长度为\(i\)的可编译代码的数量,\(f_{i,j}\)表示寄存器初始值为\(j\)、终值为\(0\)的代码数量,\(F_{i,j}\)表示寄存器初值为\(0\)、终值为\(j\)的代码数量,\(g_{i,j}\)表示长度为\(i\)可以加上......
  • nodejs的安装及使用
    node官网:Node.js中文网、Node.js官网node安装包下载:下载|Node.js中文网、DownloadNode.js®、node的安装法1:直接下载安装node打开下载好的安装程序->接受许可协议、选择安装路径(默认c盘)->Install完成安装法2:通过nvm安装具体参照:nvm的安装及使用-CSDN博客注意......
  • activiti流程配置——vue整合bpmn.js
    acitivti提供了流程图绘制的应用,可以整合到流程项目钟。但是现在很多项目都是前后端分离,vue前端开发比较多。所以,我用vue整合了一下bpmn。具体的整合过程,网上有大把的资料可以参考;我这边就不罗列了。我主要记录一下,vue整合bpmn过程中,对于activiti流程而言有几个地方要注意:......
  • cJSON:解析JSON
    解析数组将JSON数组解析并存储到自定义的结构体组合的单链表中,打印单链表中所有的结点数据。例如:[{"name":"Zhao","age":18},{"name":"Qian","age":19},{"name":"Sun","ag......
  • CesiumJS【Basic】- #053 绘制渐变填充多边形(Entity方式)-使用canvas
    文章目录绘制渐变填充多边形(Entity方式)-使用canvas1目标2代码2.1main.ts绘制渐变填充多边形(Entity方式)-使用canvas1目标使用Entity方式绘制绘制渐变填充多边形-使用canvas2代码2.1main.tsimport*asCesiumfrom'cesium';constviewer......
  • CesiumJS【Basic】- #054 绘制渐变填充多边形(Entity方式)-使用shader
    文章目录绘制渐变填充多边形(Entity方式)-使用shader1目标2代码2.1main.ts绘制渐变填充多边形(Entity方式)-使用shader1目标使用Entity方式绘制绘制渐变填充多边形-使用shader2代码2.1main.tsimport*asCesiumfrom'cesium';constviewer......