three实现三维可调节参数弹性十足的苹果效果代码

代码语言:html

所属分类:三维

代码描述:three实现三维可调节参数弹性十足的苹果效果代码

代码标签: three 三维 调节 参数 弹性 十足 苹果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
 
<meta charset="UTF-8">
 

 
 
 
<style>
html
,
body
{
   
padding: 0;
   
margin: 0;
}

.container {
   
position: fixed;
   
top: 0;
   
left: 0;
   
width: 100%;
   
height: 100%;
   
background-color: #ffffee;
}

.page-title {
   
position: absolute;
   
top: 50%;
   
left: 50%;
   
transform: translate(-50%, -50%);
   
font-size: 16vh;
   
width: 100%;
   
text-align: center;
   
user-select: none;
   
pointer-events: none;
   
mix-blend-mode: luminosity;
   
/* color: #DEB887; */
   
color: lightpink;
}

.lil-gui {
   
--width: 400px;
   
max-width: 90%;
   
--widget-height: 20px;
   
font-size: 15px;
   
--input-font-size: 15px;
   
--padding: 10px;
   
--spacing: 10px;
   
--slider-knob-width: 5px;
   
--background-color: rgba(5, 0, 15, .8);
   
--widget-color: rgba(255, 255, 255, .3);
   
--focus-color: rgba(255, 255, 255, .4);
   
--hover-color: rgba(255, 255, 255, .5);
   
--font-family: monospace;
   
z-index: 1;
}
</style>

 
 
</head>

<body translate="no">
 
<div class="container">
   
<canvas id="apple-canvas"></canvas>
   
<div class="page-title">
        Blobby Apple
   
</div>
</div>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/es-module-shims.1.6.3.js"></script>
<script type="importmap">
 
{
   
   
"imports": {      
     
"three": "//repo.bfw.wiki/bfwrepo/js/module/three/build/164/three.module.js",
     
"three/addons/": "//repo.bfw.wiki/bfwrepo/js/module/three/examples/164/jsm/"
   
}
 
}
</script>

 
     
<script type="module">
import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';

const containerEl = document.querySelector(".container");
const canvasEl = document.querySelector("#apple-canvas");

let renderer, scene, camera, orbit, lightHolder, mesh;

initScene();
window.addEventListener("resize", updateSceneSize);

function initScene() {
  renderer = new THREE.WebGLRenderer({
    antialias: true,
    canvas: canvasEl,
    alpha: true });

  renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
  renderer.shadowMap.enabled = true;

  scene = new THREE.Scene();
  camera = new THREE.PerspectiveCamera(45, containerEl.clientWidth / containerEl.clientHeight, .1, 1000);
  camera.position.set(0, 1, 2);
  camera.lookAt(0, 0, 0);

  updateSceneSize();

  const ambientLight = new THREE.AmbientLight(0xffffff, .5);
  scene.add(ambientLight);
  const sideLight = new THREE.DirectionalLight(0xffffff, 10);
  sideLight.position.set(15, 0, 15);
  lightHolder = new THREE.Group();
  lightHolder.add(sideLight);
  scene.add(lightHolder);

  orbit = new OrbitControls(camera, canvasEl);
  orbit.enableZoom = false;
  orbit.enablePan = false;
  orbit.enableDamping = true;
  orbit.autoRotate = true;
  orbit.autoRotateSpeed = 2;

  const gltfLoader = new GLTFLoader();
  gltfLoader.load(
  'https://ksenia-k.com/models/realistic-apple.glb',
  gltf => {

    mesh = gltf.scene.children[0];
    mesh.castShadow = true;
    mesh.receiveShadow = true;

    const material = mesh.material;
    material.userData.time = { value: 0 };
    material.userData.speed = { value: .2 };
    material.userData.frequency = { value: .8 };
    material.userData.disto.........完整代码请登录后点击上方下载按钮下载查看

网友评论0