美文网首页
three.js给一个立方体贴图片

three.js给一个立方体贴图片

作者: IamaStupid | 来源:发表于2022-08-16 16:13 被阅读0次

three.js给一个立方体贴图片

<template>
    <section class="sky3d-wrap" id="three3dWrap">
    </section>
</template>
<script>
// 通过访问 https://cdn.skypack.dev/three 来查找最新版本。
// import * as THREE from 'https://cdn.skypack.dev/pin/three@v0.143.0-Cpkbmg37IsbIniRRPFSZ/mode=imports,min/optimized/three.js';
// 方式 1: 导入整个 three.js核心库
import * as THREE from 'three';
import {OrbitControls} from 'three/examples/jsm/controls/OrbitControls.js'
// 方式 2: 仅导入你所需要的部分
// import { Scene } from 'three';
export default {
    name: 'sky-box',
    data() {
      return {
      }
    },
    created() {
    },
    mounted() {
      const scene = new THREE.Scene();

      const camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 500 );
      camera.position.set( 0, 0, 200);
      camera.lookAt( 0, 0, 0);

      const geometry = new THREE.BoxGeometry( 50, 50, 50);
      const textureLoader = new THREE.TextureLoader();
      // const material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
      const cube = new THREE.Mesh(
        geometry,
        [
          // 右面材质
          new THREE.MeshBasicMaterial({
            map: textureLoader.load(require('@images/hyc1/1_front_01.jpg'))
          }),
          // 左面材质
          new THREE.MeshBasicMaterial({
            map: textureLoader.load(require('@images/hyc1/1_front_01.jpg'))
          }),
          // 上面材质
          new THREE.MeshBasicMaterial({
            map: textureLoader.load(require('@images/hyc1/1_front_01.jpg'))
          }),
          // 下面材质
          new THREE.MeshBasicMaterial({
            map: textureLoader.load(require('@images/hyc1/1_front_01.jpg'))
          }),
          // 前面材质
          new THREE.MeshBasicMaterial({
            map: textureLoader.load(require('@images/hyc1/1_front_01.jpg'))
          }),
          // 后面材质
          new THREE.MeshBasicMaterial({
            map: textureLoader.load(require('@images/hyc1/1_front_01.jpg'))
          }),
        ]
      );
      scene.add( cube );

      const renderer = new THREE.WebGLRenderer();
      renderer.setSize( window.innerWidth, window.innerHeight );
      document.getElementById('three3dWrap').appendChild( renderer.domElement );

      const controls = new OrbitControls( camera, renderer.domElement );

      //controls.update() must be called after any manual changes to the camera's transform
      animate()

      function animate() {

        requestAnimationFrame( animate );

        // required if controls.enableDamping or controls.autoRotate are set to true
        controls.update();

        renderer.render( scene, camera );

      }
    },
    methods: {
    }
}
</script>
<style lang="less" scoped>
.sky3d-wrap {
    width: 100vw; height: 100vh; position: relative;
}
</style>

相关文章

网友评论

      本文标题:three.js给一个立方体贴图片

      本文链接:https://www.haomeiwen.com/subject/zvxdgrtx.html