位置: IT常识 - 正文

程序人生 | 与足球共舞的火柴人(致敬格拉利什,赋予足球更深的意义)(程序人是什么意思)

发布时间:2024-01-17
程序人生 | 与足球共舞的火柴人(致敬格拉利什,赋予足球更深的意义)

推荐整理分享程序人生 | 与足球共舞的火柴人(致敬格拉利什,赋予足球更深的意义)(程序人是什么意思),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:程序人生雷军,程序人生官网,程序化人生,csdn程序人生,程序人生官网,程序人生官网,程序人生英文,程序人生可爱图片,内容如对您有帮助,希望把文章链接给更多的朋友!

个人简介

👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端 📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀未来打算: 为中国的工业软件事业效力n年 🥇推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2&Vue3项目实战 🥝Node.js 🌕个人推广:每篇文章最下方都有加入方式,旨在交流学习&资源分享&商务合作,快加入进来吧

文章目录一、前言二、使用 Three.js 渲染足球三、使用 Three.js 渲染跳舞的火柴人四、总结(充能)五、写在最后(观世界杯有感)一、前言

2022 年的 卡塔尔足球世界杯 已经开赛 14 天。

2022.11.21 晚,格拉利什 进球后 庆祝动作 的背后其实有一段 非常感人的故事(格拉利什和患脑瘫的小球迷的暖心约定)。

【格拉利什庆祝动作】【世界杯感动瞬间】

花有重开日,人无再少年。格拉利什 这类人的存在,赋予了足球更深的意义!

程序人生,用技术记录世界杯,接下来我们使用 Three.js 技术,来实现一个 与足球共舞的火柴人(致敬格拉利什)

备注:其实我自己在电脑上运行效果是非常顺滑流畅的,可能是录屏软件的问题,会导致观看效果不佳(看着卡顿,其实很丝滑)

与足球共舞的火柴人

二、使用 Three.js 渲染足球

简介:Three.js 是 JavaScript 编写的 WebGL 第三方库。提供了非常多的 3D 显示功能。

程序人生 | 与足球共舞的火柴人(致敬格拉利什,赋予足球更深的意义)(程序人是什么意思)

渲染足球前我们得先有一张足球的材质贴图(football.png),用于把图贴到我们创建的球体上。如下所示:

创建一个HTML文件,World_Cup.html

备注:以下仅简单的解释了部分代码的含义,详细内容请自行学习

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>2022世界杯</title> <style> body { margin: 0px; } </style></head><body> <script type="text/javascript" src="https://cdn.bootcss.com/three.js/90/three.min.js"></script> <script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script> <script type="text/javascript"> // 初始化相机 let camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 10000) camera.position.z = 500; // 初始化场景 let scene = new THREE.Scene() // 初始化渲染器 let renderer = new THREE.WebGLRenderer() renderer.setSize(window.innerWidth, window.innerHeight) document.body.appendChild(renderer.domElement) // 定义一个球体,这里的参数可以根据需要调节 let geometry = new THREE.SphereGeometry(50, 32, 32) let texture = new THREE.TextureLoader().load('./imgs/football.png') let material = new THREE.MeshBasicMaterial({map: texture}) // 将材质和几何体进行绑定 let cube = new THREE.Mesh(geometry, material) // 将绑定后的几何体放入场景中 scene.add(cube) // 进行渲染 function animate() { requestAnimationFrame(animate) renderer.render(scene, camera) } animate() </script></body> </html>

三、使用 Three.js 渲染跳舞的火柴人

创建一个HTML文件,Matchman.html。该部分代码比较复杂,不仅需要创建场景生成火柴人,还需要给他添加一些列的动作,并完美的渲染出来(不白屏,不卡顿等)。所以需要引入很多内置的 js 文件,在此就不列举了,想要代码的可以找我要。

<!DOCTYPE html><html lang="en"><head><title>three.js webgl - loaders - BVHLoader</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"><link type="text/css" rel="stylesheet" href="main.css"><style>body {background-color: #eee;color: #444;}a {color: #08f;}h2 {color: orange;}</style></head><body><div id="info"><h2>与足球共舞的火柴人【前端杂货铺】</h2></div><script async src="https://unpkg.com/es-module-shims@1.3.6/dist/es-module-shims.js"></script><script type="importmap">{"imports": {"three": "../build/three.module.js","three/addons/": "./jsm/"}}</script><script type="module">import * as THREE from 'three';import { OrbitControls } from 'three/addons/controls/OrbitControls.js';import { BVHLoader } from 'three/addons/loaders/BVHLoader.js';const clock = new THREE.Clock();let camera, controls, scene, renderer;let mixer, skeletonHelper;init();animate();const loader = new BVHLoader();loader.load( 'models/bvh/pirouette.bvh', function ( result ) {skeletonHelper = new THREE.SkeletonHelper( result.skeleton.bones[ 0 ] );skeletonHelper.skeleton = result.skeleton; // allow animation mixer to bind to THREE.SkeletonHelper directlyconst boneContainer = new THREE.Group();boneContainer.add( result.skeleton.bones[ 0 ] );scene.add( skeletonHelper );scene.add( boneContainer );// play animationmixer = new THREE.AnimationMixer( skeletonHelper );mixer.clipAction( result.clip ).setEffectiveWeight( 1.0 ).play();} );function init() {camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 1000 );camera.position.set( 0, 200, 300 );scene = new THREE.Scene();scene.background = new THREE.Color( 0xeeeeee );scene.add( new THREE.GridHelper( 400, 10 ) );// rendererrenderer = new THREE.WebGLRenderer( { antialias: true } );renderer.setPixelRatio( window.devicePixelRatio );renderer.setSize( window.innerWidth, window.innerHeight );document.body.appendChild( renderer.domElement );controls = new OrbitControls( camera, renderer.domElement );controls.minDistance = 300;controls.maxDistance = 700;window.addEventListener( 'resize', onWindowResize );}function onWindowResize() {camera.aspect = window.innerWidth / window.innerHeight;camera.updateProjectionMatrix();renderer.setSize( window.innerWidth, window.innerHeight );}function animate() {requestAnimationFrame( animate );const delta = clock.getDelta();if ( mixer ) mixer.update( delta );renderer.render( scene, camera );}</script></body></html>

跳舞的火柴人

四、总结(充能)

把这两部分代码 结合一下 就可以完成 与足球共舞的火柴人 了。

怎么样,是不是觉得 Three.js 还是很有意思的。

扩展:其实 Three.js 的用途还是很多的

智慧城市房屋 3D 视图开发工业软件(CAD,CAE等)

总的来说 Three.js 就是来渲染 3D 效果的。目前 Three.js 是个很强大好用的 3D 渲染库,接下来我也会进行这方面的学习,到时候可以 和大家一起探索 Three.js 的世界。

五、写在最后(观世界杯有感)

随着时代的进步,科技的发展。我们的生活也正变得更加精彩和便利。世界杯的勇士们在足球场上挥洒汗水,去取得属于他们的荣誉。

同时像 格拉利什 这样的人的存在,也暖心了很多人,给这个世界增添了一分温暖。

其实每个人都可以 做一颗小星星,用自己的那一分热,去散发着自己的那一分 微弱而又耀眼的光!

本文链接地址:https://www.jiuchutong.com/zhishi/299847.html 转载请保留说明!

上一篇:微信小程序下拉刷新(微信小程序下拉菜单怎么做)

下一篇:【无标题】(无标题节啥意思)

  • 微博如何设置不让别人看我的主页(微博如何设置不可转发)

    微博如何设置不让别人看我的主页(微博如何设置不可转发)

  • 博朗耳温枪mem是什么意思(博朗耳温枪mem是什么键)

    博朗耳温枪mem是什么意思(博朗耳温枪mem是什么键)

  • 无线耳机怎么关(无线耳机怎么关闭电源)

    无线耳机怎么关(无线耳机怎么关闭电源)

  • 如何查找匿名聊天的人(匿名聊天怎么查到本人2021)

    如何查找匿名聊天的人(匿名聊天怎么查到本人2021)

  • 京东单单减最高99是什么意思(京东单单减最高299一般减多少)

    京东单单减最高99是什么意思(京东单单减最高299一般减多少)

  • ipadpro开机键没反应(ipadpro开机键没反应怎么办)

    ipadpro开机键没反应(ipadpro开机键没反应怎么办)

  • 荣耀10怎么没有录屏(荣耀10怎么没有荣耀分享了)

    荣耀10怎么没有录屏(荣耀10怎么没有荣耀分享了)

  • 腾讯会员包季是多少天(腾讯会员包月包季包年哪个好)

    腾讯会员包季是多少天(腾讯会员包月包季包年哪个好)

  • 微信群账号怎么查看(微信群账号怎么搜索)

    微信群账号怎么查看(微信群账号怎么搜索)

  • 华为荣耀30s有nfc功能吗(华为nfc)

    华为荣耀30s有nfc功能吗(华为nfc)

  • 华为mate30摄像头用贴膜吗(华为mate30摄像头打不开闪退)

    华为mate30摄像头用贴膜吗(华为mate30摄像头打不开闪退)

  • 读取设备通话和识别码是什么(什么叫读取设备通话状态)

    读取设备通话和识别码是什么(什么叫读取设备通话状态)

  • 路由器有个5g是什么意思(路由器有个5g信号)

    路由器有个5g是什么意思(路由器有个5g信号)

  • 苹果11拍照闪光灯怎么打开(苹果11拍照闪光灯显示电量低)

    苹果11拍照闪光灯怎么打开(苹果11拍照闪光灯显示电量低)

  • oppoa5没有录屏(oppoa5手机没有录屏)

    oppoa5没有录屏(oppoa5手机没有录屏)

  • 颜色反转在哪里(相机颜色反转在哪里)

    颜色反转在哪里(相机颜色反转在哪里)

  • ipad可以下载钉钉吗(苹果ipad能不能下载钉钉)

    ipad可以下载钉钉吗(苹果ipad能不能下载钉钉)

  • 小米cc9e支持内存扩展吗(小米cc9e支持多大内存卡)

    小米cc9e支持内存扩展吗(小米cc9e支持多大内存卡)

  • 手机怎么传歌(mp3用手机怎么传歌)

    手机怎么传歌(mp3用手机怎么传歌)

  • 小米6x支持多少瓦闪充(小米6x支持多少hz刷新率)

    小米6x支持多少瓦闪充(小米6x支持多少hz刷新率)

  • 苹果平板文件储存在哪(苹果平板中的文件管理在哪里)

    苹果平板文件储存在哪(苹果平板中的文件管理在哪里)

  • imessage被拉黑啥样子

    imessage被拉黑啥样子

  • ios12请求更新不动(苹果手机请求更新没反应)

    ios12请求更新不动(苹果手机请求更新没反应)

  • 小米手机黄页在哪(小米手机黄页在设置哪里)

    小米手机黄页在哪(小米手机黄页在设置哪里)

  • 怎么删除访问记录(怎么删除访问记录qq空间)

    怎么删除访问记录(怎么删除访问记录qq空间)

  • qq轻聊版如何退出(qq轻聊版怎么卸载)

    qq轻聊版如何退出(qq轻聊版怎么卸载)

  • 应纳税所得额100万以内,税负2.5%是什么意思
  • 税收实体法和程序法分类
  • 企业增值税是什么科目
  • 有关研发支出的账务怎么做?
  • 汇算清缴时发现去年的成本少确认了报表怎么填列
  • 支付办公楼维修费
  • 以前年度无形资产本年摊销额
  • 其他综合收益包括资本公积吗
  • 公司产品的打样费入什么会计科目
  • 附加税预缴分录
  • 融资租赁手续费如何入账
  • 会计核算形式的主要区别
  • 资产负债表货币资金与现金流量表的关系
  • 低值易耗品摊销什么意思
  • 公司为员工购买五险一金是什么意思
  • 公司为什么要成立工会委员会
  • 个税申报中工资薪金是不是全年实际工资
  • 票据贴现手续费发票可以抵扣吗
  • 销售已使用过的固定资产增值税
  • 资产类科目包括哪些内容
  • 买卖房子归谁管
  • 公司代缴个人社保费怎么做账
  • 城市地下建设
  • 坏账准备和资产减值损失
  • 业务招待费是收入的
  • 网银年费如何做账
  • bios是什么请简要介绍一下
  • 入库材料未付款属于什么会计科目
  • php功能实现
  • PHP 中TP5 Request 请求对象的实例详解
  • thinkphp yii
  • 小规模场地租赁费税率是1还是5
  • php session用法
  • php读取文件内容的方法和函数
  • 终止pppoe会话
  • 长期股权投资权益法转成本法
  • 冲暂估会计分录
  • 营业外收入在现金流量表中填入哪列
  • 瓶盖再来一次表情包
  • 什么情况下计入库存商品
  • 城建税要计入税金及附加吗
  • 什么时候工程物资什么时候在建工程
  • 用友删除凭证后为什么还在
  • 季节性临时工什么意思
  • 土地使用权的界定
  • 固定资产丢失进哪个科目
  • 培训学校不退学费找什么部门
  • 开出银行承兑汇票一张用于支付材料采购款
  • 未收到投资款可以确认实收资本吗
  • 公司的房租发票怎么记账
  • 对外投资如何做帐
  • 应收票据和应付票据可以对冲吗
  • 收入的利息如何计算
  • 分公司做账报税
  • 代扣代缴完税凭证只能次月抵扣吗
  • 如何给初建单位发邮件
  • cmd命令行窗口快捷键
  • 从几个方面论述
  • bois开启usb功能
  • 双系统没有选择
  • 苹果MAC电脑如何设置开机密码
  • linux和windows关系
  • proflwiz.exe - proflwiz是什么进程 有什么用
  • WIN10系统如何修复
  • win10系统应用更新
  • 学习笔记一
  • 你将会收藏
  • css filter blur
  • Node.js中的什么模块是用于处理文件和目录的
  • node.js中使用文件流进行文件复制,首先需要创建一个
  • 现在的微信怎么用脚本登陆了
  • 怎么做到开放
  • javascript的dom
  • JavaScript的Number对象的toString()方法
  • Windows下python2.7.8安装图文教程
  • 云南国税电子税务局官网登录
  • 纳税人识别号不能含有IOZSV
  • 重庆平均缴费指数查询
  • 河南省税务局系统最新消息
  • 资源税是对在我国
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号