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

教师进修学校网站建设方案徐州盛大图文网站

教师进修学校网站建设方案,徐州盛大图文网站,彩页设计培训,app制作二维码我们在ThreeJS-3D教学二#xff1a;基础形状展示中有简单介绍过一些常用的材质#xff0c;这次我们举例来具体看下效果#xff1a; 代码是这样的#xff1a; !DOCTYPE html html langen headmeta charsetUTF-8基础形状展示中有简单介绍过一些常用的材质这次我们举例来具体看下效果 代码是这样的 !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 { GPUStatsPanel } from three/addons/utils/GPUStatsPanel.js; import { CSS2DRenderer, CSS2DObject } from three/addons/renderers/CSS2DRenderer.js; let stats, labelRenderer, gpuPanel, spotLight; let camera, scene, renderer, controls, earth; const group new THREE.Group(); let widthImg 200; let heightImg 200; let time 0; init(); initHelp(); initLight(); axesHelperWord(); animate(); // 添加平面 addPlane(); addBox();function addBox() {/*** 凹凸贴图可以使纹理也有厚度看起来更立体。凹凸贴图一般使用一张灰度图设置成材料的bumpMap属性* */const loader new THREE.TextureLoader();loader.load(../materials/line_images/stone.jpg, texture {loader.load(../materials/line_images/stone-bump.jpg,bumpTexture {const boxGeo new THREE.BoxGeometry(60, 60, 2);const material new THREE.MeshStandardMaterial({map: texture,bumpMap: bumpTexture,bumpScale: 1});const box new THREE.Mesh(boxGeo,material);box.position.set(-45, 10, 0);box.castShadow true;scene.add(box);});});/*** 法向贴图使用一张法向图来表示纹理图片某个点的法向量。即用一张图片保存另一张图片的法向量信息* 然后再在threejs中将这两个图片的信息合在一起就形成了一个细节丰富的立体纹理* 设置材质的 normalMap 属性* */loader.load(../materials/line_images/normal2.jpg, texture {loader.load(../materials/line_images/normal1.jpg, bumpTexture {const boxGeo new THREE.BoxGeometry(60, 60, 2);const material new THREE.MeshStandardMaterial({map: texture,normalMap: bumpTexture});// material.normalScale.set(1, 1)const box new THREE.Mesh(boxGeo,material);box.position.set(45, 10, 0);box.castShadow true;scene.add(box);});});// 高光贴图loader.load(../materials/line_images/earth.jpg,textureNormal {loader.load(../materials/line_images/earthSpec.png, textureSpec {const meterial new THREE.MeshPhongMaterial({shininess: 5, //高光部分的亮度默认30map: textureNormal, // 普通纹理贴图specularMap: textureSpec, // 高光贴图specular: #fff // 高光部分的颜色});/**SphereGeometryradius浮点widthSegments整数heightSegments整数radius——球体半径。默认值为1。widthSegments—水平线段的数量。最小值为3默认值为32。heightSegments—垂直线段的数量。最小值为2默认值为16。*/const earthGeo new THREE.SphereGeometry(15, 50, 50);earth new THREE.Mesh(earthGeo, meterial);earth.position.set(0, 15, 70);earth.castShadow true;scene.add(earth);});}); }function addPlane() {// 创建一个平面 PlaneGeometry(width, height, widthSegments, heightSegments)const planeGeometry new THREE.PlaneGeometry(widthImg, heightImg, 1, 1);// 创建 Lambert 材质会对场景中的光源作出反应但表现为暗淡而不光亮。const planeMaterial new THREE.MeshPhongMaterial({color: 0xb2d3e6,side: THREE.DoubleSide});const plane new THREE.Mesh(planeGeometry, planeMaterial);// 以自身中心为旋转轴绕 x 轴顺时针旋转 45 度plane.rotation.x -0.5 * Math.PI;plane.position.set(0, -4, 0);plane.castShadow true;plane.receiveShadow true;scene.add(plane); }function init() {camera new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 10, 1000 );camera.up.set(0, 1, 0);camera.position.set(60, 40, 60);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 );renderer.shadowMap.enabled true;renderer.shadowMap.type THREE.PCFSoftShadowMap;renderer.toneMapping THREE.ACESFilmicToneMapping;// 色调映射的曝光级别renderer.toneMappingExposure 1;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.minDistance 20;controls.maxDistance 1000;window.addEventListener( resize, onWindowResize );stats new Stats();stats.setMode(1); // 0: fps, 1: msdocument.body.appendChild( stats.dom );gpuPanel new GPUStatsPanel( renderer.getContext() );stats.addPanel( gpuPanel );stats.showPanel( 0 );scene.add( group ); }function initLight() {const targetObject new THREE.Object3D();targetObject.position.set(0, 0, 0);scene.add(targetObject);spotLight new THREE.SpotLight(0xffffff);spotLight.position.set(0, 80, 150);spotLight.target targetObject;spotLight.angle Math.PI / 4;spotLight.intensity 500;spotLight.penumbra 1;spotLight.decay 1;spotLight.distance 300;// spotLight.map textures[uv_grid_opengl.jpg];spotLight.castShadow true;spotLight.shadow.mapSize.width 1024;spotLight.shadow.mapSize.height 1024;spotLight.shadow.camera.near 1;spotLight.shadow.camera.far 200;spotLight.shadow.focus 1;scene.add(spotLight);const lightHelper new THREE.SpotLightHelper(spotLight);scene.add(lightHelper);const AmbientLight new THREE.AmbientLight(new THREE.Color(rgb(255, 255, 255)));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 );if (earth) {time 0.00005;earth.rotateY(time);}stats.update();controls.update();labelRenderer.render( scene, camera );renderer.render( scene, camera ); } /script /body /html 图片我依次放进来方便大家本地看效果 stone.jpg stone-bump.jpg normal2.jpg normal1.jpg earth.jpg earthSpec.png 具体的注释也都放代码里了感觉不错的点个赞光白嫖可还行
http://www.w-s-a.com/news/640931/

相关文章:

  • 广东省建设局官方网站wordpress 自动安装 插件怎么用
  • 哪类小网站容易做h5页面制作代码
  • 北京网站建设公司华网百度热搜seo
  • 小清新博客网站中山做网站公司
  • 美团做团购网站如何新建自己的网站
  • 安卓软件制作网站电子商务网站建设实训总结报告
  • 肃宁网站制作价格外国设计师素材网站
  • 自已建网站用jsp做的可运行的网站
  • 外贸建站代理网站建设设计公司哪家好
  • 普升高端品牌网站建设台州中兴建设咨询有限公司网站
  • 模板演示网站移动网站开发公司
  • 网站管理办法制度公司招聘信息
  • 宜昌市建设监理协会网站免备案免费域名
  • 河北省建设银行网站首页备案号怎么放到网站
  • 做电脑网站用什么软件有哪些wordpress版权修改
  • 加强部门网站建设工作wordpress文章页横幅
  • 中英网站怎么做wordpress本地音乐
  • 万网提供的网站建设服务的具体项目祥云平台网站建设
  • ftp网站怎么看后台的代码网站 制作软件
  • 网站开发软件教程网站tag 怎么实现
  • 中国建设监理协会化工监理协会网站彩票站自己做网站吗
  • 170个可带链接锚文本外链的网站论坛微信上如何创建小程序
  • 用js来做网站亳州建设局网站
  • 做网站的公司利润多少呢纺织厂网站模板
  • 网页设计构建的基本流程宜宾seo网站建设
  • 西安网站开发公司价格保定徐水网站建设
  • 学做川菜下什么网站软件著作权和专利的区别
  • 百度网站标题东莞外包公司有哪些
  • 织梦增加网站英文名称网页界面设计特点
  • 企业如何进行网站建设棋牌代理平台