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

安徽网站设计流程怎么在百度上建立网站

安徽网站设计流程,怎么在百度上建立网站,徐州市政建设集团公司网站,企业管理培训课程有哪些我们在项目中会有一些这样的需求#xff0c;我们可视化一个场景#xff0c;需要俯视、平移、缩放#xff0c;方便观察场景中的数据或者模型#xff0c;之所以把这个案例拿出来 1、这是个很实用的需求#xff0c;我相信很多人会用到 2、我自己认为在实际案例中我们可以学习…我们在项目中会有一些这样的需求我们可视化一个场景需要俯视、平移、缩放方便观察场景中的数据或者模型之所以把这个案例拿出来 1、这是个很实用的需求我相信很多人会用到 2、我自己认为在实际案例中我们可以学习相关知识点更易吸收些 为了丰富本篇文章知识点我还加入了一个物体沿轨迹运动的场景下面代码会介绍到回到之前的问题three中可以利用对 OrbitControls 的设置很轻松的实现相关场景代码如下 controls new OrbitControls( camera, renderer.domElement );// 移动端控制平移 缩放// controls.touches {// ONE: THREE.TOUCH.PAN,// TWO: THREE.TOUCH.DOLLY_PAN// };// PC 左平移右旋转 滚轮放大缩小 默认是右平移controls.mouseButtons {LEFT: THREE.MOUSE.PAN,MIDDLE: THREE.MOUSE.DOLLY,RIGHT: THREE.MOUSE.ROTATE};// 设置最大最小视距controls.minDistance 20;controls.maxDistance 1000;controls.autoRotate false;controls.enableRotate false;controls.enablePan true;需要注意的是移动端和PC是不同的配置minDistance和maxDistance按实际需求设置即可到这一步只是对controls的操作已经有能力实现效果了但是camera的设置也是不可或缺的即camera必须是俯视的 先上下整体效果图 看下代码 !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/titlestylebody {width: 100%;height: 100%;}* {margin: 0;padding: 0;}.label {font-size: 20px;color: #000;font-weight: 700;}/style /head body div idcontainer/div script typeimportmap{imports: {three: ../three-155/build/three.module.js,three/addons/: ../three-155/examples/jsm/}} /script script typemodule import * as THREE from three; import Stats from three/addons/libs/stats.module.js; import { OrbitControls } from three/addons/controls/OrbitControls.js; import { CSS2DRenderer, CSS2DObject } from three/addons/renderers/CSS2DRenderer.js; let stats, labelRenderer, curve, movingObjects; let camera, scene, renderer, mesBox, target, controls; const group new THREE.Group(); let progress 0; // 物体运动时在运动路径的初始位置范围0~1 const velocity 0.0005; // 影响运动速率的一个值范围0~1需要和渲染频率结合计算才能得到真正的速率 let widthImg 200; let heightImg 200; init(); initHelp(); initLight(); axesHelperWord(); animate(); // 添加一个物体 mesBox addGeometries(); // 添加平面 addPlane(); // 添加路径 makeCurve(); // 添加一个运动的物体 movingObjects addMovingObjects();window.addEventListener(mousemove, mousemoveFun);function addPlane() {// 创建一个平面 PlaneGeometry(width, height, widthSegments, heightSegments)const planeGeometry new THREE.PlaneGeometry(widthImg, heightImg, 1, 1);// 创建 Lambert 材质会对场景中的光源作出反应但表现为暗淡而不光亮。const planeMaterial new THREE.MeshLambertMaterial({color: 0xffffff});const plane new THREE.Mesh(planeGeometry, planeMaterial);// 以自身中心为旋转轴绕 x 轴顺时针旋转 45 度plane.rotation.x -0.5 * Math.PI;plane.position.set(0, -4, 0);scene.add(plane); }function addGeometries() {let img new THREE.TextureLoader().load(../materials/img/view4.jpg);img.repeat.x img.repeat.y 5;const geometry new THREE.BoxGeometry( 10, 10, 10 );let material new THREE.MeshPhongMaterial({map: img,flatShading: true,side: THREE.DoubleSide,transparent: 1});const mesh new THREE.Mesh( geometry, material );mesh.position.x 0;mesh.position.y 0;mesh.position.z -20;scene.add( mesh );return mesh; }function addMovingObjects() {let img new THREE.TextureLoader().load(../materials/img/view3.jpg);const geometry new THREE.BoxGeometry( 10, 10, 10 );const material new THREE.MeshPhongMaterial({map: img,flatShading: true,side: THREE.DoubleSide,transparent: 1});const mesh new THREE.Mesh( geometry, material );scene.add( mesh );return mesh; }function makeCurve() {// 创建一个环形路径curve new THREE.CatmullRomCurve3([new THREE.Vector3(80, 0, 80),new THREE.Vector3(80, 0, -80),new THREE.Vector3(-80, 0, -80),new THREE.Vector3(-80, 0, 80)]);curve.curveType catmullrom;curve.closed true;//设置是否闭环curve.tension 0; //设置线的张力0为无弧度折线// 为曲线添加材质在场景中显示出来不显示也不会影响运动轨迹相当于一个Helperconst points curve.getPoints(20);const geometry new THREE.BufferGeometry().setFromPoints(points);const material new THREE.LineBasicMaterial({color: #f00,linewidth: 1});// Create the final object to add to the sceneconst curveObject new THREE.Line(geometry, material);curveObject.position.y 1;curveObject.visible false;scene.add(curveObject); }function mousemoveFun() {let width widthImg;let height heightImg;let newPo;let newPoHeight;const prevPos camera.position.clone();if (camera.position[x] width / 2) {newPo width / 2 - 0.01;camera.position.set(newPo, prevPos.y, prevPos.z);controls.target new THREE.Vector3(newPo, 0, prevPos.z);controls.enablePan false;} else if (camera.position[x] -width / 2) {newPo -width / 2 0.01;camera.position.set(newPo, prevPos.y, prevPos.z);controls.target new THREE.Vector3(newPo, 0, prevPos.z);controls.enablePan false;} else if (camera.position[z] height / 2) {// 因为我们的坐标系 y轴在上 所以平移时 height 即是 znewPoHeight height / 2 - 0.01;camera.position.set(prevPos.x, prevPos.y, newPoHeight);controls.target new THREE.Vector3(prevPos.x, 0, newPoHeight);controls.enablePan false;} else if (camera.position[z] -height / 2) {newPoHeight -height / 2 0.01;camera.position.set(prevPos.x, prevPos.y, newPoHeight);controls.target new THREE.Vector3(prevPos.x, 0, newPoHeight);controls.enablePan false;} else {controls.enablePan true;} }function init() {camera new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 10, 2000 );camera.up.set(0, 1, 0);camera.position.set(0, 100, 0);camera.lookAt(0, 0, 0);scene new THREE.Scene();// scene.background new THREE.Color( #ccc );renderer new THREE.WebGLRenderer( { antialias: true } );renderer.setPixelRatio( window.devicePixelRatio );renderer.setSize( window.innerWidth, window.innerHeight );document.body.appendChild( renderer.domElement );labelRenderer new CSS2DRenderer();labelRenderer.setSize( window.innerWidth, window.innerHeight );labelRenderer.domElement.style.position absolute;labelRenderer.domElement.style.top 0px;labelRenderer.domElement.style.pointerEvents none;document.getElementById( container ).appendChild( labelRenderer.domElement );controls new OrbitControls( camera, renderer.domElement );// 移动端控制平移 缩放// controls.touches {// ONE: THREE.TOUCH.PAN,// TWO: THREE.TOUCH.DOLLY_PAN// };// PC 左平移右旋转 滚轮放大缩小 默认是右平移controls.mouseButtons {LEFT: THREE.MOUSE.PAN,MIDDLE: THREE.MOUSE.DOLLY,RIGHT: THREE.MOUSE.ROTATE};// 设置最大最小视距controls.minDistance 20;controls.maxDistance 1000;controls.autoRotate false;controls.enableRotate false;controls.enablePan true;window.addEventListener( resize, onWindowResize );stats new Stats();stats.setMode(1); // 0: fps, 1: msdocument.body.appendChild( stats.dom );scene.add( group ); }function initLight() {let spotLight;spotLight new THREE.SpotLight( 0xffffff, 500 );spotLight.name Spot Light;spotLight.angle Math.PI / 5;spotLight.penumbra 0.1;spotLight.position.set( 0, 5, 10 );spotLight.castShadow true;spotLight.shadow.camera.near 2;spotLight.shadow.camera.far 100;spotLight.shadow.mapSize.width 1024;spotLight.shadow.mapSize.height 1024;scene.add( spotLight );const AmbientLight new THREE.AmbientLight(0xCCCCCC, 2);scene.add( AmbientLight ); }function initHelp() {// const size 100;// const divisions 5;// const gridHelper new THREE.GridHelper( size, divisions );// scene.add( gridHelper );// The X axis is red. The Y axis is green. The Z axis is blue.const axesHelper new THREE.AxesHelper( 100 );scene.add( axesHelper ); }function axesHelperWord() {let xP addWord(X轴);let yP addWord(Y轴);let zP addWord(Z轴);xP.position.set(50, 0, 0);yP.position.set(0, 50, 0);zP.position.set(0, 0, 50); }function addWord(word) {let name span${word}/span;let moonDiv document.createElement( div );moonDiv.className label;// moonDiv.textContent Moon;// moonDiv.style.marginTop -1em;moonDiv.innerHTML name;const label new CSS2DObject( moonDiv );group.add( label );return label; }function onWindowResize() {camera.aspect window.innerWidth / window.innerHeight;camera.updateProjectionMatrix();renderer.setSize( window.innerWidth, window.innerHeight ); }function animate() {requestAnimationFrame( animate );// mesh绕自身中心的 y 轴自转if (mesBox) {mesBox.rotation.y 0.01;}if (curve movingObjects) {if (progress 1 - velocity) {// 获取样条曲线指定点坐标const point curve.getPointAt(progress);movingObjects.position.set(point.x, point.y, point.z);progress velocity;} else {progress 0;}}stats.update();controls.update();labelRenderer.render( scene, camera );renderer.render( scene, camera ); } /script /body /html 这里是全部代码可以看出 three用的是 155版本大家从官网上下载到本地改下路径即可。图片url你可以换成本地图片项目就能跑起来了。 中间立方体在做了一个环绕自身y轴旋转外面的立方体通过获取curve上的坐标点沿着curve的轨迹运动。 这里有一些新的知识点 new THREE.TextureLoader().load(‘…/materials/img/view3.jpg’); TextureLoader是three加载图片的方法我们还可以这样用 let loader new THREE.TextureLoader(); loader.load(‘url’, (img) { // img 这个img就是加载完成后的图片 }); 这时就一个疑问了同步还是异步我们来看源码 其实还是异步拿到图片后我们发现material有一个map参数可以接收图片作为材质这样material就可以做的很丰富了side是指物体的正反两面THREE.DoubleSide即两面都要渲染如果我们只看外面不要设置这里这样也能节省一些性能 let material new THREE.MeshPhongMaterial({map: img,flatShading: true,side: THREE.DoubleSide,transparent: 1});最后一个知识点即物体沿着轨迹运动我们把这一行代码 curveObject.visible false; 改为 true 大家就可以看到这个轨迹了。 逻辑代码中已经写的很详细了大家也可以思考下还有哪些方法可以作为curve使用。 如果感觉有用点个赞不过分吧
http://www.dnsts.com.cn/news/9552.html

相关文章:

  • psd做成网站潍坊网站建设首荐创美网络
  • 做正常站网站都被墙了网络营销工具的分类
  • asp.net网站开发流程及相关工具网站建设比较好
  • 医疗软件网站建设公司排名加盟商网站建设
  • 网站收缩广告沧州*网站建设
  • 郑州建设网站企业关键词指数
  • 北京网站建设学习帝国cms做漫画网站教程
  • 上海正规做网站公司报价泉州住房和城乡建设局网站
  • 浙江龙泉建设局网站郑州网站建设技术方案
  • 网站群站优化品牌网络推广运营公司
  • 校园网站建设建议音乐建设网站
  • 婚纱照网站绵阳网站开发公司
  • 河南省城乡和住房建设厅网站成都制作手机网站
  • 如何设置的iis后台服务网站地址二次元wordpress博客主题
  • 优质的seo网站排名优化软件建立大型网站流程
  • 陕西省住房和城乡建设厅网站首页互联网产品设计
  • 移动端网站建设需要注意哪些问题wordpress图片弹窗
  • 花生壳软件做的网站柬埔寨网站开发
  • 怎样申请免费的网站空间宁波公司网站建立
  • html5中文网站欣赏东莞常平镇邮政编码
  • 密云区免费网站建设网站建设 排名宝下拉
  • 免费打开的网站h5网站开发框架
  • 宁波网站关键词优化排名一个公司可以做多少个网站
  • 做网站用多大的服务器wordpress 注册界面
  • 免费虚拟主机网站源码商城app源码
  • 建网站底部怎么做的做网站空间百度云和阿里云区别
  • 潮州网站设计网站建设企业网站建设
  • 西安网址开发 网站制作短视频运营
  • 怎样查网站的注册地点企业网站推广成功案例
  • 贵州手机网站建设wordpress 下载统计