位置: IT常识 - 正文

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

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

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

文章相关热门搜索词:程序人生雷军,程序人生官网,程序化人生,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 转载请保留说明!

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

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

  •  网站推广的八种基本方法(网站推广包括哪些)

    网站推广的八种基本方法(网站推广包括哪些)

  • 华为matebooke触摸板失灵怎么回事(华为matebooke触摸屏怎么开启)

    华为matebooke触摸板失灵怎么回事(华为matebooke触摸屏怎么开启)

  • 手机qq如何不显示年龄(手机QQ如何不显示电脑登录)

    手机qq如何不显示年龄(手机QQ如何不显示电脑登录)

  • 抖音退出公会有什么后果(抖音退出公会要钱吗)

    抖音退出公会有什么后果(抖音退出公会要钱吗)

  • 电脑开启微信收款提示(电脑微信有收款声音吗?)

    电脑开启微信收款提示(电脑微信有收款声音吗?)

  • 红米10x屏幕材质(红米10x手机屏幕材质)

    红米10x屏幕材质(红米10x手机屏幕材质)

  • ipad颜色显示异常(ipad显示颜色怪异)

    ipad颜色显示异常(ipad显示颜色怪异)

  • win10system占用cpu高(2020win10system占用cpu过高)

    win10system占用cpu高(2020win10system占用cpu过高)

  • 港版苹果6可以用电信卡吗(港版苹果可以用移动卡吗)

    港版苹果6可以用电信卡吗(港版苹果可以用移动卡吗)

  • ata是固态硬盘吗(ata硬盘sata接口一样的吗)

    ata是固态硬盘吗(ata硬盘sata接口一样的吗)

  • 电脑下载东西慢怎么回事(网速超好,下载却很慢)

    电脑下载东西慢怎么回事(网速超好,下载却很慢)

  • 钉钉号为什么会封(钉钉号为什么会莫名其妙的丢失)

    钉钉号为什么会封(钉钉号为什么会莫名其妙的丢失)

  • 华为p40与小米10对比(华为P40与小米10哪个好)

    华为p40与小米10对比(华为P40与小米10哪个好)

  • 微信群备注别人能看到吗(微信群备注别人的昵称所有人都能看到吗)

    微信群备注别人能看到吗(微信群备注别人的昵称所有人都能看到吗)

  • 爱奇艺如何传视频给别人(爱奇艺如何传视频给其他手机)

    爱奇艺如何传视频给别人(爱奇艺如何传视频给其他手机)

  • 快手设置特别关注有什么用(快手设置特别关注后对方上线会提醒吗)

    快手设置特别关注有什么用(快手设置特别关注后对方上线会提醒吗)

  • vivo手机摄像头坏了怎么办(vivo手机摄像头检测在哪里)

    vivo手机摄像头坏了怎么办(vivo手机摄像头检测在哪里)

  • OPPO k5怎么关闭拨号按键音(oppok5怎么关闭盲人模式)

    OPPO k5怎么关闭拨号按键音(oppok5怎么关闭盲人模式)

  • 手机上怎么隐藏无线网(手机上怎么隐藏微信图标)

    手机上怎么隐藏无线网(手机上怎么隐藏微信图标)

  • 开机排线断了怎么开机(开机排线断了怎么接线)

    开机排线断了怎么开机(开机排线断了怎么接线)

  • 自动回复怎么设置手机(自动回复怎么设置给一个人)

    自动回复怎么设置手机(自动回复怎么设置给一个人)

  • 飞猪怎么绑定银行卡(飞猪怎么绑定手机号)

    飞猪怎么绑定银行卡(飞猪怎么绑定手机号)

  • 新版qq怎么绑定关系(新版qq怎么绑定手机号)

    新版qq怎么绑定关系(新版qq怎么绑定手机号)

  • win10硬盘分区格式(win10硬盘分区格式是GUID格式,win7的是MBR格式)

    win10硬盘分区格式(win10硬盘分区格式是GUID格式,win7的是MBR格式)

  • pavmail.exe - pavmail进程是什么文件 有什么用

    pavmail.exe - pavmail进程是什么文件 有什么用

  • 企业新成立,何种情况下需要开始记账报税
  • 其他应收款收不回来税务处理
  • 预计净残值和残值
  • 债权投资减值对摊余成本和利息收入的影响
  • 公司帮员工全额缴纳五险一金
  • 应付款多付了怎么处理
  • 负数发票报税不让填怎么办
  • 经常做无票收入没有通过公户收款会有问题吗
  • 划拨房二次出售缴纳出让金吗
  • 利润是负数如何计算利润率
  • 是否退还投标文件
  • 商业企业购货分录
  • 计提地税走哪个科目
  • 增值税专用发票电子版
  • 在文具公司工作怎么样
  • 税局会例行检查吗
  • 案例讨论如何进行
  • 境内个人去境外开设公司
  • 小规模纳税人自己可以开专票吗
  • 劳务费开发票还要代扣代缴吗?
  • 盈余积累转增资本的条件
  • 云服务器免费使用
  • linux命令执行成功后会返回什么
  • ppt文件打不开了怎么办
  • 招标公司返回的钱怎么算
  • windows8.1下Apache+Php+MySQL配置步骤
  • php输出一维数组
  • 预收账款何时结转
  • 单位中秋节福利发放物品
  • win7开机拨号取消
  • php字符串定义的三种方式
  • 对公账户转到私人账户要手续费吗
  • linux mib
  • 购入无形资产的增值税税率
  • 税控盘用来干嘛的
  • 电子发票重开之前的是不是就没用了
  • css实现文字颜色渐变
  • 时间序列模型ARIMA的优缺点
  • php处理xml数据
  • 冲减预提成本分录
  • load命令怎么用
  • Python中tkinter的 Variable类
  • 测验3: 基本数据类型 (第3周)
  • 去参加博览会的英文
  • sql server 实例
  • 建筑劳务单位
  • 建筑公司收到劳务发票会计分录
  • 车辆保险发票一般在哪开
  • 装饰公司财务工作内容
  • 增值税发票打印机怎么调整打印位置
  • 印花税需要计提吗2023
  • 管理费用如何分摊到项目
  • 损益明细表计提企业所得税
  • 贷款公司如何确定利率
  • 项目资本金如何确定
  • 出口货物退货的原因
  • 公司转让二手车需要缴纳什么税
  • solaris11下载
  • windowsandbox
  • xp系统ip地址设置在哪里
  • xp系统ie浏览器怎么升级
  • Linux常用命令的实验总结
  • centos最小化安装步骤
  • win8应用商店怎么卸载
  • win10一直重置
  • Fast TileMap
  • js计数排序
  • node 删除文件
  • node.js deno
  • Android dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent详解
  • unity3d功能介绍
  • js实现多继承
  • jQuery ztree实现动态树形多选菜单
  • python语句分为哪两种
  • 河南省低保查询官网
  • 百分之13的税率怎么算如何算百分之13的税率
  • 稽查局积案清理工作成效显著
  • 湖北省税务申报流程 个体户
  • 单位医保账号怎么注销掉
  • 如何查公司税务问题
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设