当前位置: 首页 > news >正文

深圳开发网站建设哪家好服装产品开发流程

深圳开发网站建设哪家好,服装产品开发流程,怎么下载百度,新网站怎么做👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.AnimationMixer 动画…

👨‍⚕️ 主页: gis分享者
👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅!
👨‍⚕️ 收录于专栏:threejs gis工程师


文章目录

  • 一、🍀前言
    • 1.1 ☘️THREE.AnimationMixer 动画混合器
  • 二、🍀使用AnimationMixer实现变形动画
    • 1. ☘️实现思路
    • 2. ☘️代码样例


一、🍀前言

本文详细介绍如何基于threejs在三维场景中使用AnimationMixer实现变形动画,亲测可用。希望能帮助到您。一起学习,加油!加油!

1.1 ☘️THREE.AnimationMixer 动画混合器

THREE.AnimationMixer动画混合器是用于场景中特定对象的动画的播放器。当场景中的多个对象独立动画时,每个对象都可以使用同一个动画混合器。
创建方法:
AnimationMixer( rootObject : Object3D )
rootObject 是 混合器播放的动画所属的对象
属性:
time:Number 全局的混合器时间(单位秒; 混合器创建的时刻记作0时刻)。
timeScale:全局时间(mixer time)的比例因子。
说明: 将混合器的时间比例设为0, 稍后再设置为1,可以暂停/取消暂停由该混合器控制的所有动作。
方法:
clipAction(clip : AnimationClip, optionalRoot : Object3D):AnimationAction 返回所传入的剪辑参数的AnimationAction, 根对象参数可选,默认值为混合器的默认根对象。第一个参数可以是动画剪辑(AnimationClip)对象或者动画剪辑的名称。
如果不存在符合传入的剪辑和根对象这两个参数的动作, 该方法将会创建一个。传入相同的参数多次调用将会返回同一个剪辑实例。
existingAction (clip : AnimationClip, optionalRoot : Object3D) : AnimationAction 返回传入剪辑的已有AnimationAction, 根对象参数可选,默认值为混合器的默认根对象。
第一个参数可以是动画剪辑(AnimationClip)对象或者动画剪辑的名称。
update (deltaTimeInSeconds : Number) : AnimationMixer 推进混合器时间并更新动画。
deltaTimeInSeconds 参数表示当前帧与前一帧之间的时间差(以秒为单位)。

二、🍀使用AnimationMixer实现变形动画

1. ☘️实现思路

  • 1、初始化renderer渲染器
  • 2、初始化Scene三维场景
  • 3、初始化camera相机,定义相机位置 camera.position.set,设置相机方向camera.lookAt。
  • 4、初始化THREE.AmbientLight环境光源,scene场景加入环境光源,初始化THREE.PointLight点光源,设置点光源位置,设置点光源投影,scene添加点光源。
  • 5、加载几何模型:创建THREE.AxesHelper坐标辅助工具,创建THREE.JSONLoader加载器加载horse.js json模型文件,生成mesh物体,scene场景加入mesh和THREE.AxesHelper坐标辅助工具。创建THREE.AnimationMixer 动画混合器,创建模型动画片段THREE.AnimationClip,根据创建的动画混合器和动画片段创建AnimationAction动画调度器,播放动画。
  • 6、加入controls、gui控制,加入stats监控器,监控帧数信息。

2. ☘️代码样例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>learn48(使用AnimationMixer实现变形动画)</title><!--<script src="lib/threejs/127/three.js-master/build/three.js"></script>--><script src="lib/threejs/91/three.js"></script><!--<script src="lib/threejs/127/three.js-master/examples/js/controls/OrbitControls.js"></script>--><script src="https://johnson2heng.github.io/three.js-demo/lib/js/controls/OrbitControls.js"></script><script src="lib/threejs/127/three.js-master/examples/js/libs/stats.min.js"></script><script src="lib/threejs/127/three.js-master/examples/js/libs/dat.gui.min.js"></script><script src="lib/js/Detector.js"></script>
</head>
<style type="text/css">html, body {margin: 0;height: 100%;}canvas {display: block;}</style>
<body onload="draw()">
</body>
<script>var renderervar initRender = () => {renderer = new THREE.WebGLRenderer({antialias: true})renderer.setClearColor(0xeeeeee)renderer.setPixelRatio(window.devicePixelRatio)renderer.setSize(window.innerWidth, window.innerHeight)document.body.appendChild(renderer.domElement)}var scenevar initScene = () => {scene = new THREE.Scene()}var cameravar initCamera = () => {camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000)camera.position.set(0, 40, 50)}var lightvar initLight = () => {scene.add(new THREE.AmbientLight(0x444444))light = new THREE.PointLight(0xffffff)light.position.set(0, 50, 0)light.castShadow = truescene.add(light)}var mesh, mixer, actionvar initModel = () => {var helper = new THREE.AxesHelper(50)scene.add(helper)var loader = new THREE.JSONLoader()loader.load('data/model/horse/horse.js', geometry => {mesh = new THREE.Mesh(geometry, new THREE.MeshLambertMaterial({vertexColors: THREE.FaceColors,morphTargets: true}))mesh.scale.set(0.1, 0.1, 0.1)scene.add(mesh)// AnimationMixer是场景中特定对象的动画播放器。当场景中的多个对象独立动画时,可以为每个对象使用一个AnimationMixermixer = new THREE.AnimationMixer(mesh)// CreateFromMorphTargetSequence 通过geometry.morphTargets创建一个AnimationClip对象,其中包含每帧的内容和总帧数var clip = THREE.AnimationClip.CreateFromMorphTargetSequence('run', geometry.morphTargets, 30)// mixer.clipAction 返回一个可以控制动画的AnimationAction对象  参数需要一个AnimationClip 对象// AnimationAction.setDuration 设置一个循环所需要的时间,当前设置了一秒action = mixer.clipAction(clip)action.setDuration(1).play()})}var statsvar initStats = () => {stats = new Stats()document.body.appendChild(stats.dom)}var controlsvar initControls = () => {controls = new THREE.OrbitControls(camera, renderer.domElement)controls.enableDamping = true}var guivar initGui = () => {gui = {animation: true}var datGui = new dat.GUI()datGui.add(gui, 'animation').onChange(e => {if (e) {action.play()} else {action.stop()}})}var clock = new THREE.Clock()var render = () => {var time = clock.getDelta()if (mixer) {mixer.update(time)}controls.update()}var onWindowResize = () => {camera.aspect = window.innerWidth / window.innerHeightcamera.updateProjectionMatrix()render()renderer.setSize(window.innerWidth, window.innerHeight)}var animate = () => {render()stats.update()// controls.update()renderer.render(scene, camera)requestAnimationFrame(animate)}var draw = () => {if (!Detector.webgl) Detector.addGetWebGLMessage()initRender()initScene()initCamera()initLight()initModel()initStats()initControls()initGui()animate()window.onresize = onWindowResize}
</script>
</html>

效果如下:
在这里插入图片描述

http://www.yayakq.cn/news/93593/

相关文章:

  • 深圳论坛网站建设做展示网站要恋用什么程序
  • 建设银行网站总是崩溃ui网站建设
  • 网站建设要钱么网站建设销售销售流程
  • 网站招标书怎么做医院网站建设方案计划书
  • 一个域名做多个网站重庆市工程建设信息网打不开
  • 网页设计个人网站心得体会在那里能找到网站
  • 自助做网站哪家好医疗网站建设公司
  • 十大中文网站排名建站兔软件常见问题
  • 郑州app开发网站建设抖音关注10元一单兼职
  • 系部网站建设中期检查总结网页游戏app排行榜
  • js弹出网站成都房产信息网查询
  • 俄语学习网站网页设计图片轮播怎么做
  • 东莞网站建设设计wordpress 读书模板
  • 手机网站用什么域名建设网银怎么开通使用
  • 网站更新升级班级优化大师官网
  • 余姚微信网站建设中国移动官方网站官网
  • 网站备案背景免费网站模板下载大全下载
  • 网站服务器解决方案做一个短视频app需要多少钱
  • win8网站设计单页式网站系统
  • 手表网站欧米茄报价昆明网站优化建设
  • 制作一个网站的步骤江门广告网站推广技巧
  • 江苏盐城建筑公司网站山西省建设厅招标网站
  • 做公益选哪个网站好wordpress全部教程
  • wordpress开启子目录多站点模式长沙seo免费诊断
  • 为什么要建立电子商务网站广东东莞房价
  • 公司网站SEO优化哪个做得好我做的网站关键词到首页了没单子
  • 余江区建设局网站如何做条形码网站怎么搞
  • 网站seo外链建设办文明网站 做文明网民活动
  • 环保科技东莞网站建设网络营销引流到微信xiala5
  • 建设无障碍网站购物网站图片的放大怎么做的