【问题标题】:Three.js - how to set borders to objects?Three.js - 如何为对象设置边框?
【发布时间】:2015-01-30 17:52:16
【问题描述】:

我用three.js 创建了多边形/多面体?是否可以为其设置边框宽度和颜色? 这是我的示例代码,您可能会在其中看到一个数字。如何设置边框? 是否有其他方法可以创建多边形?

<html> 
<head> 
	<title>Моё</title> 
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<style>
		body { margin: 0; }
		canvas { width: 100%; height: 100% }
	</style> 
</head> 
<body>
	<script src="../build/three.min.js"></script>
	<script src="http://stemkoski.github.io/Three.js/js/OrbitControls.js"></script>
	<script>
	var phi = 0;
	var scene    = new THREE.Scene();
	var camera   = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 3000 );
	//var camera = new THREE.OrthographicCamera( window.innerWidth / - 200, window.innerWidth / 200, window.innerHeight / 200, window.innerHeight / - 200, 0.1, 1000 );
	var renderer = new THREE.WebGLRenderer();
	renderer.setSize( window.innerWidth, window.innerHeight );
	document.body.appendChild( renderer.domElement );
	
	
	var polyhedronShape, polyhedronPts = [], cube, mesh;
	var container, scene, camera, renderer, controls, stats;
	// CONTROLS
	controls = new THREE.OrbitControls( camera, renderer.domElement );
	
	polyhedronPts.push( new THREE.Vector2 ( 0, 60) );
	polyhedronPts.push( new THREE.Vector2 ( 60, 60) );
	polyhedronPts.push( new THREE.Vector2 ( 60, 0) );
	
	polyhedronShape = new THREE.Shape( polyhedronPts );

	var extrudeSettings = {amount: 20}; // bevelSegments: 2, steps: 2 , bevelSegments: 5, bevelSize: 8, bevelThickness:5
	
	var geometry = new THREE.ExtrudeGeometry( polyhedronShape, extrudeSettings );

	mesh = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( { color: 0x00cc00 } ) );
	//mesh.position.set( 0, 0, 0 );
	//mesh.rotation.set( 0, 0, 100 );
	//mesh.scale.set( 1, 1, 1 );
	scene.add( mesh );
	

	camera.position.z = 111;
	//cube.position.x += 2;
	var cam_z = 0.1, cam_max = 9, cam_min = 2;
	function render() {
		requestAnimationFrame( render );
		controls.update();
		if (Math.random() > 0.2) {
		renderer.render( scene, camera );
			//camera.position.z += cam_z;
		}
	}
	render();
	</script>
</body>
</html>

【问题讨论】:

  • “您可能会在其中看到一个人物”是什么意思?您的意思是要突出显示多面体的边缘吗?还是你想要@Wilt 描述的轮廓效果?
  • 我想突出边缘
  • 我的答案不是您想要的吗?

标签: javascript three.js border


【解决方案1】:

我不确定 this outline effect 是否是您正在寻找的,但这是在对象周围设置边框的好方法:

Here a similar question 在这里您可以找到更多示例和 working fiddle 供您玩耍。

如果我没记错的话,它使用了一些 WebGL 原生着色器效果:

vertex_shader: [
    "uniform float offset;",
    "void main() {",
        "vec4 pos = modelViewMatrix * vec4( position + normal * offset, 1.0 );",
        "gl_Position = projectionMatrix * pos;",
    "}"
].join("\n"),

【讨论】:

    猜你喜欢
    • 2017-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    相关资源
    最近更新 更多