代码之家  ›  专栏  ›  技术社区  ›  godblessstrawberry

three.js sethsl()设置意外的颜色

  •  1
  • godblessstrawberry  · 技术社区  · 6 年前

    SESSL(H,S,L) -在提供的HSL值上设置此颜色的值。值的范围为0到1。

    为什么我尝试时会变成青色 material.color.setHSL( 0.5, 1, 0.5 ) ?我希望用黄色代替颜色选择器显示的颜色。

    enter image description here

    let camera, scene, renderer, material;
    
    init();
    
    function init() {
    
        camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.01, 10 );
        camera.position.z = 1;
    
        scene = new THREE.Scene();
    
        const geometry = new THREE.PlaneGeometry();
        material = new THREE.MeshBasicMaterial( { color: 0xffffff } );
    		material.color.setHSL( 0.5, 1, 0.5 );
        
        const mesh = new THREE.Mesh( geometry, material );
        scene.add( mesh );
    
        renderer = new THREE.WebGLRenderer( { antialias: true } );
        renderer.setSize( window.innerWidth, window.innerHeight );
        document.body.appendChild( renderer.domElement );
        renderer.render( scene, camera );
    }
    body {
    	  margin: 0;
    }
    <script src="//cdn.rawgit.com/mrdoob/three.js/master/build/three.min.js"></script>
    1 回复  |  直到 6 年前
        1
  •  2
  •   prisoner849    6 年前

    颜色选取器从0到360。 sethsl从0变为1。

    如果您想要360中的色调50,则设置50/360,即0.1388888888888889。

    sethsl(0.1388888888888889,1,0.5)为黄色。

    let camera, scene, renderer, material;
    
    init();
    
    function init() {
    
        camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.01, 10 );
        camera.position.z = 1;
    
        scene = new THREE.Scene();
    
        const geometry = new THREE.PlaneGeometry();
        material = new THREE.MeshBasicMaterial( { color: 0xffffff } );
    		material.color.setHSL( 0.1388888888888889, 1, 0.5 );
        
        const mesh = new THREE.Mesh( geometry, material );
        scene.add( mesh );
    
        renderer = new THREE.WebGLRenderer( { antialias: true } );
        renderer.setSize( window.innerWidth, window.innerHeight );
        document.body.appendChild( renderer.domElement );
        renderer.render( scene, camera );
    }
    body {
    	  margin: 0;
    }
    <script src="//cdn.rawgit.com/mrdoob/three.js/master/build/three.min.js"></script>