zoukankan      html  css  js  c++  java
  • THREE.js代码备份——canvas_lines(随机点、画线)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <title>three.js canvas - lines - random</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 {
                background-color: #000000;
                margin: 0px;
                overflow: hidden;
            }
    
            a {
                color:#0078ff;
            }
        </style>
    </head>
    <body>
    
    <script src="../build/three.js"></script>
    
    <script src="js/renderers/Projector.js"></script>
    <script src="js/renderers/CanvasRenderer.js"></script>
    
    <script>
    
        var mouseX = 0, mouseY = 0,
    
                windowHalfX = window.innerWidth / 2,
                windowHalfY = window.innerHeight / 2,
    
                SEPARATION = 200,
                AMOUNTX = 10,
                AMOUNTY = 10,
    
                camera, scene, renderer;
    
        init();
        animate();
    
        function init() {
    
            var container, separation = 100, amountX = 50, amountY = 50,
                    particles, particle;
    
            container = document.createElement('div');
            document.body.appendChild(container);
    
            camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
            camera.position.z = 100;
    
            scene = new THREE.Scene();
    
            renderer = new THREE.CanvasRenderer();
            renderer.setPixelRatio( window.devicePixelRatio );
            renderer.setSize( window.innerWidth, window.innerHeight );
            container.appendChild( renderer.domElement );
    
            // particles
    
            var PI2 = Math.PI * 2;
            var material = new THREE.SpriteCanvasMaterial( {
    
                color: 0x99ff99,   //点的颜色
                program: function ( context ) {
    
                    context.beginPath();
                    context.arc( 0, 0, 0.5, 0, PI2, true );  //x,y,半径,startAngle,endAngle,anticlockwise
                    context.fill();
    
                }
    
            } );
    
            var geometry = new THREE.Geometry();
    
            for ( var i = 0; i < 100; i ++ ) {
    
                particle = new THREE.Sprite( material );
                particle.position.x = Math.random()*2  - 1; //应该是在1-65535之间取值,再x2
                particle.position.y = Math.random() *2 - 1;
                particle.position.z = Math.random() *2 - 1;
                particle.position.normalize();
                particle.position.multiplyScalar( Math.random() * 10 + 450 );//在原有的基础上扩大这么多倍(10以内的随机数+450)
                particle.scale.x = particle.scale.y = 10;
                scene.add( particle );
    
                geometry.vertices.push( particle.position );
    
            }
    
            // lines
    
            var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: 0xffffff, opacity: 0.5 } ) );//颜色,不透明度
            scene.add( line );
    
            document.addEventListener( 'mousemove', onDocumentMouseMove, false );
            document.addEventListener( 'touchstart', onDocumentTouchStart, false ); //触屏设备
            document.addEventListener( 'touchmove', onDocumentTouchMove, false );
    
            //
    
            window.addEventListener( 'resize', onWindowResize, false );
    
        }
    
        function onWindowResize() {
    
            windowHalfX = window.innerWidth / 2;
            windowHalfY = window.innerHeight / 2;
    
            camera.aspect = window.innerWidth / window.innerHeight;
            camera.updateProjectionMatrix();
    
            renderer.setSize( window.innerWidth, window.innerHeight );
    
        }
    
        //
    
        function onDocumentMouseMove(event) {
    
            mouseX = event.clientX - windowHalfX;
            mouseY = event.clientY - windowHalfY;
    
        }
    
        function onDocumentTouchStart( event ) {
    
            if ( event.touches.length > 1 ) {
    
                event.preventDefault();
    
                mouseX = event.touches[ 0 ].pageX - windowHalfX;
                mouseY = event.touches[ 0 ].pageY - windowHalfY;
    
            }
    
        }
    
        function onDocumentTouchMove( event ) {
    
            if ( event.touches.length == 1 ) {
    
                event.preventDefault();
    
                mouseX = event.touches[ 0 ].pageX - windowHalfX;
                mouseY = event.touches[ 0 ].pageY - windowHalfY;
    
            }
    
        }
    
        //
    
        function animate() {
    
            requestAnimationFrame( animate );
    
            render();
    
        }
    
        function render() {
    
            camera.position.x += ( mouseX - camera.position.x ) * .05;
            camera.position.y += ( - mouseY + 200 - camera.position.y ) * .05;
            camera.lookAt( scene.position );
    
            renderer.render( scene, camera );
    
        }
    
    </script>
    </body>
    </html>
  • 相关阅读:
    unity 颜色空间
    Shader 常用常量 函数等
    Unity3d cg Shader 相关的方法
    DirectX HLSL Shader 内置函数
    unity texture2d 图片尺寸压缩
    Unity中Zxing生成二维码只能生成256大小图片的解决方案
    读取保存 调用系统选框 仅限Win/Mac/WebGL
    Unity编辑器中递归设置文件夹下资源的 AssetBundle Tag 可多选
    扣绿幕Shader(可自选颜色)
    智能手环体验:UP24
  • 原文地址:https://www.cnblogs.com/ForRickHuan/p/5734346.html
Copyright © 2011-2022 走看看