three.js - 三.js setHSL() 设置意想不到的颜色
问题描述
setHSL(h,s,l) - 在提供的 HSL 值上设置此颜色的值。值范围从 0 到 1。
为什么我尝试时会变成青色material.color.setHSL( 0.5, 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.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>
解决方案
颜色选择器从 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>
推荐阅读
- python-3.x - 如何在pyspark中命名kmeans集群
- oracle - 如何在一个程序中执行多个程序?
- linux - 我可以在 Linux 服务器上安装两个 Chef 客户端,以便两个客户端都可以管理 linux 服务器吗?
- java - 如何检查jackson中的JsonNode对象是否可以映射到PoJo对象?
- php - 重命名 woocommerce 登录页面上的用户名标签
- javascript - 使用 ReactJS 在表中呈现具有多个表数据的多个表行
- ruby-on-rails - 为什么在较新版本的 Rails 中控制器发生任何更改时不需要重新启动服务器?
- django - 如何覆盖 wagtail 管理员登录页面
- vba - 如何将忽略年份的儒略日期转换为儒略日
- java - Hibernate @OneToMany @ManyToOne 映射