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

河北网站设计公司专业的制作网站开发公司

河北网站设计公司,专业的制作网站开发公司,做门户型网站,网站 导出链接最近,Three.js的官网更新了,将原本放examples的地方改成了manual,里面是three.js的使用大合集,感兴趣的小伙伴可以刷一遍,会有很多收获! 今天记录一个之前没太注意过的方法——lookAt。以前只知道camera的…

最近,Three.js的官网更新了,将原本放examples的地方改成了manual,里面是three.js的使用大合集,感兴趣的小伙伴可以刷一遍,会有很多收获!

今天记录一个之前没太注意过的方法——lookAt。以前只知道camera的lookAt方法,用于控制摄像机的朝向位置,而Object3D,也有类似的方法。Mesh作为Object3D的子类,自然也继承了相关的使用。
先贴一下源文件中关于lookAt的介绍:

    /*** Rotates the object to face a point in world space.* @remarks This method does not support objects having non-uniformly-scaled parent(s).* @param vector A vector representing a position in world space to look at.*/lookAt(vector: Vector3): void;/*** Rotates the object to face a point in world space.* @remarks This method does not support objects having non-uniformly-scaled parent(s).* @param x Expects a `Float`* @param y Expects a `Float`* @param z Expects a `Float`*/lookAt(x: number, y: number, z: number): void;

在空间中旋转改模型使其朝向某一个点,这就是lookAt的介绍。使用方法和camera的一毛一样,不在多说。

下面简单分享一个小例子,用于展示lookAt的使用场景。

看介绍就知道,这个是用来旋转的,那么就不难想到有那么几个应用场景,比如说让某个模型绕某一个点一直旋转,就可以在模型位置更新的同时,更新lookAt,使其一直朝向某一个点;又比如说让模型在空间中缓慢的按固定轨迹往复旋转。

这里的例子是采用一个坦克,坦克身体和炮筒按照不同的轨迹进行旋转,坦克本身不动:

let tank: Three.Group;
let pao: Three.Mesh;
let body: Three.Group;new GLTFLoader().load("/tank.glb", (glb) => {tank = glb.scene;scene.add(tank);pao = tank.getObjectByName("炮筒");body = tank.getObjectByName("身体");
});const bodyArray = [new Three.Vector3(10, 0, 10),new Three.Vector3(0, 0, 5),new Three.Vector3(-7, 0, 0),new Three.Vector3(-10, 0, 3),new Three.Vector3(-2, 0, -5),new Three.Vector3(2, 0, -10),new Three.Vector3(5, 0, -4),new Three.Vector3(10, 0, 0),new Three.Vector3(10, 0, 10),
];
const bodyCurve = new Three.CatmullRomCurve3(bodyArray, false, "chordal");
const bodyLines = bodyCurve.getPoints(2000);const paoArray = [new Three.Vector3(4, 2, 1),new Three.Vector3(2, 3, 0),new Three.Vector3(0, 2, -4),new Three.Vector3(-4, 2.4, -7),new Three.Vector3(-7, 2, -2),new Three.Vector3(-10, 3, 0),new Three.Vector3(-5, 4, 4),new Three.Vector3(0, 1.7, 7),new Three.Vector3(4, 2.7, 1),
];
const paoCurve = new Three.CatmullRomCurve3(paoArray, false, "chordal");
const paoLines = paoCurve.getPoints(2000);const floorMesh = new Three.PlaneGeometry(50, 50);
const floorMat = new Three.MeshBasicMaterial({color: 0x666666,side: Three.DoubleSide,
});
const floor = new Three.Mesh(floorMesh, floorMat);
floor.rotateX(-Math.PI / 2);
scene.add(floor);let i = 0;
const loop = () => {if (i > 2000) i = 0;body?.lookAt(bodyLines[i]);pao?.lookAt(paoLines[i++]);renderer.render(scene, camera);requestAnimationFrame(loop);
};loop();

实现的最终效果如下(炮筒承受不能承受的角度):

(因为限制了5M的大小,所以降低了质量,图片有些模糊)

http://www.dtcms.com/wzjs/211082.html

相关文章:

  • 郑州建设信息网打不开厦门谷歌seo公司有哪些
  • 网站做链接算侵权吗网站建设一条龙
  • 重庆公司建设网站新网站推广最直接的方法
  • 网站根目录在哪里中文搜索引擎排名
  • 龙岗 网站建设金华关键词优化平台
  • 青岛网站建站百度网站收录提交入口
  • 点餐网站模板 手机端域名收录查询工具
  • 中国人在俄罗斯做网站需要多少卢布seo引擎优化外包
  • 微信做淘宝客 网站打不开百度开放云平台
  • 服装网页怎么制作搜索引擎优化的方式有哪些
  • 查询网站旗下域名seo教程之关键词是什么
  • 网上建立网站赚钱太原关键词排名优化
  • 怎么做旅游网站推广怎么做百度推广
  • 网站建设seo优化的好处百度热搜榜排名今日
  • 免费网站报价单怎么做长沙seo推广外包
  • 网站建设实训室域名信息查询系统
  • 建公司网站步骤千锋教育培训
  • 海南网站建设fwlit网盘搜索
  • 自适应网站开发文字大小如何处理品牌词优化
  • html网页设计大作业信息流优化师前景
  • 自媒体可做外链网站站长之家查询工具
  • 天津网站制作公司电话优化技术
  • 黄图网站有哪些 推荐seo诊断
  • 人力资源和社会保障部职业能力建设司智能优化大师下载
  • 做彩票网站会被判死刑网站提交链接入口
  • 如何建议一个网站最新新闻热点事件及评论
  • 河北 石家庄 网站建设网络怎么推广自己的产品
  • 广东省网站开发建设网络营销策划书范文模板
  • 手机网站建设的流程快速优化seo
  • 衡水做网站技术关于网络营销的方法