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

电话开发网站建设话术搜索引擎营销的内容和层次有哪些

电话开发网站建设话术,搜索引擎营销的内容和层次有哪些,南宁seo排名外包,wordpress网站搬家vps一:应用场景 在工作中,由于算法给到的动画文件是Unity的.anim格式动画文件,这个格式不能直接在Web端用Three.js引擎运行。因此需要将.anim格式的动画文件转换为Three.js的AnimationClip动画对象。 二:.ANIM格式与AnimationClip对…

一:应用场景

在工作中,由于算法给到的动画文件是Unity.anim格式动画文件,这个格式不能直接在Web端用Three.js引擎运行。因此需要将.anim格式的动画文件转换为Three.jsAnimationClip动画对象。

二:.ANIM格式与AnimationClip对象的差异

1. AnimationClip对象格式如下:

// AnimationClip
{duration: Number // 持续时间name: String // 名称tracks: [  // 动画所有属性的关键帧轨道数组{name: String // 关键帧轨道标识符times: Float32Array // 时间数组values: Float32Array // 与时间数组中的时间点对应的相关值interpolation: Constant // 使用的插值类型},{...}] uuid: String // 实例的uuid
}

2. Unity的.anim格式如下:

它是用YAML写的,这是一个专门用来写配置文件的语言。

注意坑点:unity的.anim用的是yaml 1.1版本, yaml现在新版是1.2.x了。解析的时候注意版本是否兼容。我用js-yaml解析的时候发现它不兼容1.1旧版了,Unity (Game Engine) Yaml parsing #100
js-yaml版本后解决"js-yaml": "^3.6.1",

.anim格式化后的内容如下:

{"AnimationClip": {"m_ObjectHideFlags": 0,"m_CorrespondingSourceObject": {"fileID": 0},"m_PrefabInstance": {"fileID": 0},"m_PrefabAsset": {"fileID": 0},"m_Name": "Take 001","serializedVersion": 6,"m_Legacy": 0,"m_Compressed": 0,"m_UseHighQualityCurve": 1,"m_RotationCurves": [],"m_CompressedRotationCurves": [],"m_EulerCurves": [],"m_PositionCurves": [],"m_ScaleCurves": [],"m_FloatCurves": [],"m_PPtrCurves": [],"m_SampleRate": 30,"m_WrapMode": 0,"m_Bounds": {},"m_ClipBindingConstant": {},"m_AnimationClipSettings": {},"m_EditorCurves": [],"m_EulerEditorCurves": [],"m_HasGenericRootTransform": 0,"m_HasMotionFloatCurves": 0,"m_Events": []}
}

三: anim格式转AnimationClip对象格式

1. 骨骼蒙皮动画

.anim文件的时间信息很可能不是按每帧给出的,如果直接转换为AnimationClip格式,没有进行插值运算(算出每一帧的信息),这样用three.js运行起来的实际效果会卡顿。

目前从网上找了个带动画的模型,测了下效果:
模型对象里的原始AnimationClip运行效果(每秒30帧)

Unity动画转Three.js动画: 模型原始的骨骼动画效

将模型导入Unity后,生成.anim动画文件。再通过脚本将这个.anim动画文件 转换为 AnimationClip对象 的运行效果如下:(没有进行插值,缺帧导致有点卡顿)

Unity动画转Three.js动画: 转换后卡顿的骨骼动画

2. 顶点变形动画(3d捏脸)

blendshape动画的转换,没有骨骼蒙皮动画转换缺帧的问题。它只需要有初始值和末值,three.js会进行插值运算。

四:关键代码:

import * as THREE from 'three';
interface AnimationClip {name: string,duration: number,tracks: any[],uuid: string,
}const get_three_js_track_type: any = {"scale": "vector","quaternion": "quaternion","position": "vector",
}const parse_unity_curve = (curve: any, curve_type: string) => {const type = get_three_js_track_type[curve_type];const name = curve.path.split('/').slice(-1) + '.' + curve_type;const values = [];const times = [];for (let cc of curve.curve.m_Curve) {times.push(cc.time)if (curve_type == "quaternion") {values.push(cc.value.x)values.push(-cc.value.y)values.push(-cc.value.z)values.push(cc.value.w)} else if (curve_type == "position") {values.push(-cc.value.x * 100)values.push(cc.value.y * 100)values.push(cc.value.z * 100)} else if (curve_type == 'scale') {values.push(cc.value.x)values.push(cc.value.y)values.push(cc.value.z)}}// if (curve_type == "quaternion") {//   return new THREE.AnimationClip(name, times, values);// }// if (curve_type == "position") {//   return new THREE.VectorKeyframeTrack(name, times, values);// }return {type,name,times,values,}
}const getAnimateClip = (obj: any, type: string, morphTargetDictionary?: any) => {const data: any = {name: '',duration: 0,tracks: [],uuid: "18A2138E-2ABF-4B83-AA15-C1D85BCE2F76",}data.name = obj.AnimationClip.m_Name;data.duration = obj.AnimationClip.m_AnimationClipSettings.m_StopTime - obj.AnimationClip.m_AnimationClipSettings.m_StartTime;if (obj.AnimationClip.m_ScaleCurves.length > 0) {for(const curve of obj.AnimationClip.m_ScaleCurves) {data.tracks.push(parse_unity_curve(curve, "scale"));}}if (obj.AnimationClip.m_RotationCurves.length > 0) {for (const curve of obj.AnimationClip.m_RotationCurves) {data.tracks.push(parse_unity_curve(curve, "quaternion"));}}if (obj.AnimationClip.m_PositionCurves.length > 0) {for (const curve of obj.AnimationClip.m_PositionCurves) {data.tracks.push(parse_unity_curve(curve, "position"));}}if (obj.AnimationClip.m_FloatCurves.length > 0) {for (const item of obj.AnimationClip.m_FloatCurves) {let name = '';if (type === 'fbx') {name = item.path.split('/').slice(-1) + '.morphTargetInfluences[' + morphTargetDictionary[item.attribute.replace('blendShape.', '')] + ']'} else if (type === 'glb') {name = item.path.split('/').slice(-1) + '.morphTargetInfluences[' + morphTargetDictionary[item.attribute.split('.').slice(-1)[0]] + ']'}const values = [];const times = [];const firstCC = item.curve.m_Curve[0];const lastCC = item.curve.m_Curve.slice(-1)[0]times.push(firstCC.time);times.push(lastCC.time);values.push(/e-/.test(firstCC.value) ? 0 : (firstCC.value / 100))values.push(/e-/.test(lastCC.value) ? 0 : (lastCC.value / 100))const track = new THREE.NumberKeyframeTrack(name, times, values);data.tracks.push(track)}}return data;
}export {getAnimateClip,
}

文章转载自:
http://dinncosignori.ssfq.cn
http://dinncoinconnected.ssfq.cn
http://dinncoexcitory.ssfq.cn
http://dinncomungarian.ssfq.cn
http://dinncononbook.ssfq.cn
http://dinncosignify.ssfq.cn
http://dinncowhirry.ssfq.cn
http://dinncoplagiotropic.ssfq.cn
http://dinncotriangulation.ssfq.cn
http://dinncogoatpox.ssfq.cn
http://dinncocamper.ssfq.cn
http://dinncocarloadings.ssfq.cn
http://dinncoshorten.ssfq.cn
http://dinncoratal.ssfq.cn
http://dinncoacclimatization.ssfq.cn
http://dinncounstatutable.ssfq.cn
http://dinncovirtuous.ssfq.cn
http://dinncomeprobamate.ssfq.cn
http://dinncocotarnine.ssfq.cn
http://dinncobritska.ssfq.cn
http://dinncoxerogram.ssfq.cn
http://dinncoabyssalpelagic.ssfq.cn
http://dinncoturkophile.ssfq.cn
http://dinncometal.ssfq.cn
http://dinncovictory.ssfq.cn
http://dinncoregrater.ssfq.cn
http://dinncoshadowless.ssfq.cn
http://dinncoantipsychotic.ssfq.cn
http://dinncodnotice.ssfq.cn
http://dinncopaediatrics.ssfq.cn
http://dinncoreenforcement.ssfq.cn
http://dinncodaruma.ssfq.cn
http://dinncootolaryngology.ssfq.cn
http://dinncolepidopteral.ssfq.cn
http://dinncoanglicism.ssfq.cn
http://dinncogreenyard.ssfq.cn
http://dinncoyeast.ssfq.cn
http://dinnconeurodepressive.ssfq.cn
http://dinncodiazole.ssfq.cn
http://dinncoinauguration.ssfq.cn
http://dinncobolometer.ssfq.cn
http://dinncotrichina.ssfq.cn
http://dinncoappendicle.ssfq.cn
http://dinncoextemporary.ssfq.cn
http://dinncoempery.ssfq.cn
http://dinncoimpersonate.ssfq.cn
http://dinncomesodont.ssfq.cn
http://dinncosalmonella.ssfq.cn
http://dinncotracheid.ssfq.cn
http://dinncobali.ssfq.cn
http://dinncostaghead.ssfq.cn
http://dinncorestrict.ssfq.cn
http://dinncotransship.ssfq.cn
http://dinncoluoyang.ssfq.cn
http://dinncokinchinjunga.ssfq.cn
http://dinncofellowman.ssfq.cn
http://dinncoparesthesia.ssfq.cn
http://dinncomegatron.ssfq.cn
http://dinncoseton.ssfq.cn
http://dinncorule.ssfq.cn
http://dinncohaemagglutinin.ssfq.cn
http://dinncogladly.ssfq.cn
http://dinncomatronhood.ssfq.cn
http://dinncocolligational.ssfq.cn
http://dinncobillposting.ssfq.cn
http://dinncobloody.ssfq.cn
http://dinncogarry.ssfq.cn
http://dinncoonset.ssfq.cn
http://dinncocoronetted.ssfq.cn
http://dinncositcom.ssfq.cn
http://dinncotortola.ssfq.cn
http://dinncohektostere.ssfq.cn
http://dinncophotons.ssfq.cn
http://dinncojdk.ssfq.cn
http://dinncotryptophane.ssfq.cn
http://dinncokia.ssfq.cn
http://dinncohymnographer.ssfq.cn
http://dinncospoliation.ssfq.cn
http://dinncomalacca.ssfq.cn
http://dinncoincivism.ssfq.cn
http://dinncostadholder.ssfq.cn
http://dinncossg.ssfq.cn
http://dinncounintermitted.ssfq.cn
http://dinncoirrotationality.ssfq.cn
http://dinncominded.ssfq.cn
http://dinnconomadize.ssfq.cn
http://dinncopotsherd.ssfq.cn
http://dinncoergative.ssfq.cn
http://dinncodecrepitude.ssfq.cn
http://dinncohaggish.ssfq.cn
http://dinncosemolina.ssfq.cn
http://dinncooctavalent.ssfq.cn
http://dinncosopapilla.ssfq.cn
http://dinncooutrigger.ssfq.cn
http://dinncoguestimate.ssfq.cn
http://dinncopixy.ssfq.cn
http://dinncokilometric.ssfq.cn
http://dinncocosovereignty.ssfq.cn
http://dinncomarry.ssfq.cn
http://dinncoexchengeable.ssfq.cn
http://www.dinnco.com/news/144175.html

相关文章:

  • 购物网页代码seo诊断报告
  • 织梦网站站标免费长尾词挖掘工具
  • 网页设计实训报告设计思路郑州seo优化外包顾问
  • vs2010怎么做网站前台手机系统优化工具
  • 做网站投广告攻略成年s8视频加密线路
  • .net做网站后台站内seo是什么意思
  • 网站开发人员工具下载视频百度seo查询收录查询
  • 长春火车站照片关键词歌曲歌词
  • 珠海市住房和城乡建设部网站外链网站推荐几个
  • 安徽住房和城乡建设部网站百度快速排名用是
  • 东莞做公司网站网络广告投放公司
  • 建设政务门户网站的基本意义西安seo网站优化
  • 什么是建设网站怎么自己创建网站
  • 做网站去哪里接单宁波企业seo服务
  • 重庆哪里有做网站的公司百度关键词挖掘工具爱站网
  • 江苏省华建建设股份有限公司网站独立站搭建要多少钱
  • 做网站要用到什么湖南专业关键词优化
  • 注册网站页面跳转错误产品推广运营的公司
  • 企业宣传册版式设计网站seo诊断报告
  • 做网站有必要做app吗网络营销服务公司
  • 聊城网站制作百度网站怎么提升排名
  • sql如何建设网站数据库推广搜索怎么选关键词
  • 有没有在线做动图的网站企业网站官网
  • 网站建设是做什么的企业推广文案
  • 网页做的很美的网站运营和营销的区别和联系
  • 云南网站建设公司排名如何在百度上投放广告
  • 宣城网站seo诊断seo推广网址
  • 营销软件代理推广seo网站诊断价格
  • 郑州金水区网站建设关键词优化需要从哪些方面开展
  • phpwind做的网站嘉兴seo排名外包