three打造一个三维盆景效果代码
代码语言:html
所属分类:三维
代码描述:three打造一个三维盆景效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> * { margin: 0; padding: 0; } body { overflow: hidden; } </style> </head> <body translate="no" > <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.r118.js"></script> <script type="module"> import { OrbitControls } from "https://unpkg.com/three@0.120.1/examples/jsm/controls/OrbitControls.js"; var camera, scene, renderer, controls, armMat, mesh, time = 0; initThree(); animate(); function initThree() { scene = new THREE.Scene(); // RENDER renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setSize(window.innerWidth, window.innerHeight); renderer.shadowMap.enabled = true; // renderer.shadowMap.type = THREE.PCFSoftShadowMap; // default THREE.PCFShadowMap // CAMERA camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.001, 200); camera.position.x = 0; camera.position.y = 0; camera.position.z = 5; scene.add(camera); // CONTROLS controls = new OrbitControls(camera, renderer.domElement); controls.update(); // LIGHTS var light = new THREE.AmbientLight(0xffffff, 0.7, 100); scene.add(light); var light = new THREE.DirectionalLight(0xffffff, 1, 100); light.position.set(-3, 5, -3); //default; light shining from top scene.add(light); // var planeGeometry = new THREE.PlaneBufferGeometry(200, 200, 32, 32); // var planeMaterial = new THREE.MeshStandardMaterial({ color: 0xffffff }); // var plane = new THREE.Mesh(planeGeometry, planeMaterial); // plane.rotateX(Math.PI / -2); let radius = 1; let sphereGeo = new THREE.IcosahedronGeometry(radius * 0.68, 1); let sphereMat = new THREE.MeshBasicMaterial({ color: 0xff833b }); let sphereObj = new THREE.Mesh(sphereGeo, sphereMat); scene.add(sphereObj); let legGeo = new THREE.CylinderGeometry( radius * 0.1, radius * 0.1, radius * 2, 16); let leg = new THREE.Mesh(legGeo, sphereMat); leg.position.setY(-radius); scene.add(leg); let eMat = new THREE.MeshBasicMaterial({ color: 0xbbbbbb }); let e1G = new THREE.BoxGeometry(radius, radius * 0.2, radius); let e1 = new THREE.Mesh(e1G, eMat); e1.position.setY(-radius * 2); scene.add(e1); let isoGeo = new THREE.IcosahedronGeometry(radius, 1); let armGeo = new THREE.CylinderBufferGeometry( 0, //radius top 0.1, //radius bottom radius * 1.25, //height 16, //radial segments 16, // height segments false // open ended ); armMat = new THREE.ShaderMaterial({ uniforms: { time: { type: "f", value: time } }, vertexShader: `uniform float time; varying vec2 vUv; varying vec3 vPosition; uniform vec2 pixels; attribute vec3 rgb; varying vec3 vrgb; vec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0;} float mod289(float x) { return x - floor(x *.........完整代码请登录后点击上方下载按钮下载查看
网友评论0