THREE.js代码备份——webgl - geometry - dynamic(模拟海浪,通过时间(毫秒)来控制平面点的运动模拟海浪,鼠标控制写在另外的js中)...

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>three.js webgl - geometry - dynamic</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
    <style>
        body {
            color: #61443e;
            font-family:Monospace;
            font-size:13px;
            text-align:center;

            background-color: #aaccff;
            margin: 0px;
            overflow: hidden;
        }

        #info {
            color: #ffffff;
            position: absolute;
            top: 0px; width: 100%;
            padding: 5px;
        }

        a {

            color: yellow;
        }

        #oldie {
            background:rgb(0,0,50) !important;
            color:#fff !important;
        }

    </style>
</head>
<body>

<div id="container"></div>
<div id="info"><a href="http://threejs.org" target="_blank">three.js</a> - dynamic geometry demo - webgl<br />(left click: forward, right click: backward)</div>

<script src="../build/three.js"></script>

<script src="js/controls/FirstPersonControls.js"></script>

<script src="js/Detector.js"></script>
<script src="js/libs/stats.min.js"></script>

<script>

    if ( ! Detector.webgl ) {

        Detector.addGetWebGLMessage();
        document.getElementById( 'container' ).innerHTML = "";

    }

    var container, stats;

    var camera, controls, scene, renderer;

    var mesh, texture, geometry, material;

    var worldWidth = 128, worldDepth = 128,
            worldHalfWidth = worldWidth / 2, worldHalfDepth = worldDepth / 2;

    var clock = new THREE.Clock();

    init();
    animate();

    function init() {

        container = document.getElementById( 'container' );

        camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 20000 );
        camera.position.y = 200;

        controls = new THREE.FirstPersonControls( camera );

        controls.movementSpeed = 500;
        controls.lookSpeed = 0.1;

        scene = new THREE.Scene();
        scene.fog = new THREE.FogExp2( 0xaaccff, 0.0007 );

        geometry = new THREE.PlaneGeometry( 20000, 20000, worldWidth - 1, worldDepth - 1 );
        geometry.rotateX( - Math.PI / 2 );

        for ( var i = 0, l = geometry.vertices.length; i < l; i ++ ) {

            geometry.vertices[ i ].y = 35 * Math.sin( i / 2 );

        }

        var texture = new THREE.TextureLoader().load( "textures/water.jpg" );
        texture.wrapS = texture.wrapT = THREE.RepeatWrapping;
        texture.repeat.set( 7, 7 );   //7x7张纹理图拼凑

        material = new THREE.MeshBasicMaterial( { color: 0x006699, map: texture } );

        mesh = new THREE.Mesh( geometry, material );
        scene.add( mesh );

        renderer = new THREE.WebGLRenderer();
        renderer.setClearColor( 0xaaccff );
        renderer.setPixelRatio( window.devicePixelRatio );
        renderer.setSize( window.innerWidth, window.innerHeight );

        container.innerHTML = "";

        container.appendChild( renderer.domElement );

        stats = new Stats();
        container.appendChild( stats.dom );

        //

        window.addEventListener( 'resize', onWindowResize, false );

    }

    function onWindowResize() {

        camera.aspect = window.innerWidth / window.innerHeight;
        camera.updateProjectionMatrix();

        renderer.setSize( window.innerWidth, window.innerHeight );

        controls.handleResize();

    }

    //

    function animate() {

        requestAnimationFrame( animate );

        render();
        stats.update();

    }

    function render() {

        var delta = clock.getDelta(),   //所消耗的时间,即当前时间与开始时间之差,单位为毫秒
                time = clock.getElapsedTime() * 10;

        for ( var i = 0, l = geometry.vertices.length; i < l; i ++ ) {

            geometry.vertices[ i ].y = 35 * Math.sin( i / 5 + ( time + i ) / 7 );

        }

        mesh.geometry.verticesNeedUpdate = true;

          controls.update( delta );  //鼠标控制事件单独写了一个js,一样需要addEventListener
        renderer.render( scene, camera );

    }

</script>

</body>
</html>
 

转载于:https://www.cnblogs.com/ForRickHuan/p/5750629.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"pan.baidu.com\ webgl three.js入门与实战" 是一个涉及到网页图形技术 WebGL 和三维图形库 three.js 的学习和实践教程。 首先,WebGL 是一种基于 HTML5 的图形引擎,允许在网页实现高性能的图形渲染。通过使用 WebGL,开发者可以在浏览器创建出具有逼真效果和交互性的三维图形。因此,学习 Webgl 可以帮助我们理解如何构建出精美的图形界面。 而 three.js 是一种基于 WebGL 的开源 JavaScript 3D 渲染库,为开发者提供了简化创建和渲染三维图形的方法和功能。它提供了丰富的内置函数和类,使得开发者可以轻松地创建出复杂的场景、模型和动画。因此,学习和掌握 Three.js 可以让我们更高效地开发出出色的 WebGL 三维图形项目。 "pan.baidu.com\webgl three.js入门与实战" 这个教程可能包含以下内容:介绍 WebGL 技术的基础知识和概念,如绘制图形的渲染管线、顶着色器和片元着色器等。同时,它也会介绍如何使用 Three.js 库来简化代码的编,实现鼠标交互、相机控制和灯光效果等。 在实战部分,教程可能会提供一些具体的案例和项目,让学习者通过实际动手操作来加深对 WebGLThree.js 的理解和掌握。这些实战项目可能包括创建一个简单的三维场景、导入和展示三维模型、实现纹理贴图和光照效果等。 总的来说,"pan.baidu.com\webgl three.js入门与实战" 是一个为初学者提供学习和实践 WebGLThree.js 技术的教程。通过学习这个教程,我们可以掌握 WebGL 技术的基础知识和概念,并且学会使用 Three.js 库来创建出精美的三维图形网页。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值