three实现三维可打开摄像头的mac笔记本电脑代码

代码语言:html

所属分类:三维

代码描述:three实现三维可打开摄像头的mac笔记本电脑代码,可设置笔记本角度和内容滚动,还可以将本地摄像头投影到笔记本电脑屏幕上。

代码标签: three 三维 打开 摄像头 mac 笔记本 电脑 代码

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

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

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

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

.container {
   
position: relative;
   
overflow: hidden;
   
background: #C6FFDD;
   
background: linear-gradient(120deg, #f7797d, #FBD786, #C6FFDD);
   
height: 100vh;
}

canvas
{
   
display: block;
   
width: 100%;
         
cursor: grab;
}

.lil-gui {
   
--width: 450px;
   
--name-width: 60%;
   
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;
}
</style>


 
</head>

<body translate="no">
 
<div class="container">
   
<canvas id="laptop"></canvas>
</div>

<script type="importmap">{
       
"imports": {
               
"three": "//repo.bfw.wiki/bfwrepo/js/module/three/build/151/three.module.js",
               
"three/addons/": "//repo.bfw.wiki/bfwrepo/js/module/three/examples/151/jsm/"
       
}
}
</script>


<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/es-module-shims.1.6.3.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/gsap.3.9.1.js"></script>
     
<script  type="module">
import * as THREE from "three";
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
import { OrbitControls } from "three/addons/controls/OrbitControls.js";
import { GUI } from "//repo.bfw.wiki/bfwrepo/js/lil-gui.esm.js";


// =======================================================
// Globals

const canvasEl = document.querySelector("#laptop");
const videoEl = document.createElement("video");

let mainTl, laptopAppearTl, laptopOpeningTl, screenOnTl, cameraOnTl, textureScrollTl, floatingTl;
let scene, camera, renderer, orbit;
let darkPlasticMaterial, cameraMaterial, baseMetalMaterial, logoMaterial, screenMaterial, keyboardMaterial;
let macGroup, lidGroup, bottomGroup, screenMesh, lightHolder, screenLight;
let screenImageTexture, screenCameraTexture;

let openingControl, contentScrollControl;
const controlParams = {
  cameraOn: false,
  openingProgress: 0,
  contentScrollProgress: 0 };

const screenSize = [29.4, 20];


// =======================================================
// Start the app

initScene();
createMaterials();

// connectToWebcam(); // if you set the webcam in advance

const modelLoader = new GLTFLoader();
modelLoader.load(
"//repo.bfw.wiki/bfwrepo/threemodel/mac/mac-noUv.glb",
glb => {
  parseModel(glb);
  addScreen();
  addKeyboard();
  createControls();
  createTimelines();
  mainTl.play(0);

  render();
  updateSceneSize();
  window.addEventListener("resize", () => updateSceneSize());
});


// =======================================================
// Three.js stuff

function initScene() {

  scene = new THREE.Scene();

  camera = new THREE.PerspectiveCamera(40, window.innerWidth / window.innerHeight, 10, 1000);
  camera.position.z = 75;

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

  renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));

  const ambientLight = new THREE.AmbientLight(0xffffff, .2);
  scene.add(ambientLight);

  lightHolder = new THREE.Group();
  scene.add(lightHolder);
  const light = new THREE.PointLight(0xFFF5E1, .8);
  light.position.set(0, 5, 50);
  lightHolder.add(light);

  orbit = new OrbitControls(camera, renderer.domElement);
  orbit.minDistance = 45;
  orbit.maxDistance = 120;
  orbit.enablePan = false;
  orbit.enableDamping = true;

  macGroup = new THREE.Group();
  macGroup.position.z = -10;
  scene.add(macGroup);
  lidGroup = new THREE.Group();
  macGroup.add(lidGroup);
  bottomGroup = new THREE.Group();
  macGroup.add(bottomGroup);
}

function updateSceneSize() {
  camera.aspect = window.innerWidth / window.innerHeight;
  camera.updateProjectionMatrix().........完整代码请登录后点击上方下载按钮下载查看

网友评论0