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

建筑设计案例网站网站建设及域名

建筑设计案例网站,网站建设及域名,做棋牌网站一般多少钱,坦洲网站建设在Three.js基础入门介绍——Three.js学习二【极简入门】中介绍了如何搭建Three.js开发环境并实现一个包含旋转立方体的场景示例,以此为前提,本篇将引进一个控制器的概念并使用”轨道控制器”(OrbitControls)来达到从不同方向展示场…

在Three.js基础入门介绍——Three.js学习二【极简入门】中介绍了如何搭建Three.js开发环境并实现一个包含旋转立方体的场景示例,以此为前提,本篇将引进一个控制器的概念并使用”轨道控制器”(OrbitControls)来达到从不同方向展示场景内容的效果。

Three.js的控制器

three.js的核心专注于3D引擎最重要的组件。其它很多有用的组件 —— 如控制器(control)、加载器(loader)以及后期处理效果(post-processing effect) —— 是 examples/jsm 目录的一部分。它们被称为“示例”,虽然你可以直接将它们拿来使用,但它们也需要重新混合以及定制。这些组件和 three.js 的核心保持同步,而 npm 上类似的第三方包则由不同的作者进行维护,可能不是最新的。

如何使用控制器
我的项目文件结构,代码在index里,three.js-master是从官网下载的整包文件
在这里插入图片描述
这里有一个引用组件模块需要注意的兼容性问题

CommonJS 导入
虽然现代的 JavaScript 打包器已经默认支持ES module,然而也有一些较旧的构建工具并不支持。对于这些情况,你或许可以对这些打包器进行配置,让它们能够理解 ES module 。例如,Browserify 仅需 babelify插件。

Import maps
和从静态主机或CDN来进行安装的方式相比,从npm安装时,导入的路径有所不同。我们意识到,对于使用两种不同方式的用户群体来说,这是一个人体工程学问题。使用构建工具与打包器的开发者更喜欢仅使用单独的包说明符(如’three’)而非相对路径,而examples/目录中的文件使用相对于 three.module.js 的引用并不符合这一期望。对于不使用构建工具的人(用于快速原型、学习或个人参考)来说,或许也会很反感这些相对导入。这些相对导入需要确定目录结构,并且比全局 THREE.* 命名空间更不宽容。
我们希望在 import maps 广泛可用时,能够移除这些相对路径,将它们替换为单独的包说明符,‘three’。这更加符合构建工具对npm包的期望,且使得两种用户群体在导入文件时能够编写完全相同的代码。对于更偏向于避免使用构建工具的用户来说,一个简单的 JSON 映射即可将所有的导入都定向到一个 CDN 或是静态文件夹。通过实验,目前你可以通过一个 import map 的 polyfill,来尝试更简洁的导入,如 import map example 示例中所示。

简而言之:
其一:在script标签中,默认不能使用module形式,不能使用import导入文件,我们需要在script标签上添加加 type=module 属性;
其二:需要用 import maps 。
操作:将

<script src="./three.js-master/build/three.js"></script>

改为

<script type="importmap">{"imports": {"three": "./three.js-master/build/three.module.js"}}
</script>
<script type="module">import * as THREE from "three";
</script>

导入轨道控制器OrbitControls

import { OrbitControls } from "./three.js-master/examples/jsm/controls/OrbitControls.js";

使用轨道控制器OrbitControls ,注意传参要求,需要先创建了需要的内容再传才行,反之则则会报错:

Uncaught ReferenceError: Cannot access ‘camera’ before initialization
Uncaught ReferenceError: Cannot access ‘renderer’ before initialization

OrbitControls 官网文档链接:https://threejs.org/docs/index.html?q=Controls#examples/zh/controls/OrbitControls

const controls = new OrbitControls(camera,renderer.domElement);//本文示例

完整代码

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>My first three.js app</title><style>body { margin: 0; }</style></head><body><script type="importmap">{"imports": {"three": "./three.js-master/build/three.module.js"}}</script><script type="module">import * as THREE from "three";import { OrbitControls } from "./three.js-master/examples/jsm/controls/OrbitControls.js";const scene = new THREE.Scene();const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );const renderer = new THREE.WebGLRenderer();renderer.setSize( window.innerWidth, window.innerHeight );document.body.appendChild( renderer.domElement );const controls = new OrbitControls(camera,renderer.domElement);//创建控制器const geometry = new THREE.BoxGeometry();const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );const cube = new THREE.Mesh( geometry, material );scene.add( cube );camera.position.z = 5;function animate() {requestAnimationFrame( animate );cube.rotation.x += 0.01;cube.rotation.y += 0.01;renderer.render( scene, camera );};animate();</script></body>
</html>

效果:可以旋转或者拖动视角
在这里插入图片描述

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

相关文章:

  • 网站优化目标凡科建设网站安全吗
  • 镇江市质监站网址2022年最好用的搜索引擎
  • 重庆做网站_重庆网站建设_重庆网络推广_重庆网络公司上海贸易公司注册
  • 下载学校网站模板下载安装入侵网站后台管理系统
  • 河南瑞达建设工程有限公司网站无锡做网络推广
  • 安全网站建设报价清单免费开源电商系统
  • 网站页面多大wordpress本地音乐2m
  • 做的网站修改编码男生浏览器推荐
  • 网站开发流程怎么写建网站 免费
  • 六安手机网站建设品牌型网站建设解决方案
  • 海口小学网站建设滨州哪里有做网站的
  • 郑州东区网站建设东莞建设网站公司简介
  • 虹桥做网站公司汉中市网站建设
  • 建设官方企业网站三种常用的网站设计软件
  • dede 网站地图模板htm拉新推广渠道
  • 新八建设集团网站网站流量依赖率
  • 邯山区建设局网站磁力在线搜索引擎
  • 网站建设与管理总结心得市场营销策划方案范文
  • 如何在招聘网站上做薪酬统计为什么手机网站跳转页面上
  • 大连哪里有手机自适应网站建设欧美化妆品网站模板下载
  • 建设网站遇到问题的解决方案沈阳关键词优化价格
  • wordpress 微信导航站学做网站要懂英语吗
  • opencart zencart网站建设百度关键词权重查询
  • 做动图的网站东莞优化公司首选3火星
  • 小说网站的阅读界面怎么做的html旅游网页设计代码
  • php 网站 手机版网站文章内容优化方案
  • 上海频道网站建设长春h5建站模板
  • 外贸做网站建设哪家好宁波seo关键词优化报价
  • 网站被人做跳转做外贸最好的网站
  • 天津微信网站开发外贸建站网站推广