three.js旋转的3D文字canvas_geometry_text
2018-03-01 10:31
525 查看
官方示例 canvas_geometry_text.html
需要注意的都写在代码中的注释里了<!DOCTYPE html>
<html lang="en">
<head>
<title>three.js canvas - geometry - text</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<script src="build/three.js"></script>
<script src="js/renderers/Projector.js"></script>
<script src="js/renderers/CanvasRenderer.js"></script>
<script src="js/libs/stats.min.js"></script>
<style>
body {
font-family: Monospace;
background-color: #f0f0f0;
margin: 0px;
overflow: hidden;
}
</style>
</head>
<body onload="threeStart();">
<div id="container"></div>
<script>
var renderer,camera,scene,container,stats,
cube,group;
function threeStart(){
container = document.getElementById('container');
renderer = new THREE.CanvasRenderer();
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth,window.innerHeight);
container.appendChild(renderer.domElement);
//创建新的字体
var loader = new THREE.FontLoader();
loader.load('helvetiker_regular.typeface.json',function(fonts){
initCamera();
initScene();
initLight();
initObject(fonts);
animation();
});
}
//相机
function initCamera(){
camera = new THREE.PerspectiveCamera(75,window.innerWidth / window.innerHeight,1,1000);
camera.position.set(0,150,500);
}
//场景
function initScene(){
scene = new THREE.Scene();
scene.background = new THREE.Color(0xf0f0f0);
}
function initLight(){
}
function initObject(fonts){
var geometry = new THREE.TextGeometry('hello three.js!',{
size: 80, //字号大小,一般为大写字母的高度
height: 10, //文字的厚度
weight: 'normal', //值为'normal'或'bold',表示是否加粗
font: fonts, //字体,默认是'helvetiker',需对应引用的字体文件
style: 'normal', //值为'normal'或'italics',表示是否斜体
bevelThickness: 1, //倒角厚度
bevelSize: 1, //倒角宽度
curveSegments: 2,//弧线分段数,使得文字的曲线更加光滑(很吃性能)
bevelEnabled: true, //布尔值,是否使用倒角,意为在边缘处斜切
});
geometry.computeBoundingBox();////重新计算当前Geometry对象的立方体界限 注意这样才有max min值
var centerOffset = (geometry.boundingBox.max.x - geometry.boundingBox.min.x ) * -0.5;
var materials = [
new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff, overdraw: 0.5 } ),
new THREE.MeshBasicMaterial( { color: 0x000000, overdraw: 0.5 } )
];
cube = new THREE.Mesh(geometry,materials);
cube.position.x = centerOffset;
group = new THREE.Group();//创建一个组,测试如果不加入组无法如以中心旋转而是从min位置旋转
group.add(cube);
scene.add(group);
stats = new Stats();
container.appendChild(stats.dom);
}
function animation(){
requestAnimationFrame(animation);
renderer.render(scene,camera);
stats.update();
var timer = Date.now() * 0.001;
group.rotation.y += Math.cos(THREE.Math.degToRad(timer)) * 0.05;
}
</script>
</body>
</html>
需要注意的都写在代码中的注释里了<!DOCTYPE html>
<html lang="en">
<head>
<title>three.js canvas - geometry - text</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<script src="build/three.js"></script>
<script src="js/renderers/Projector.js"></script>
<script src="js/renderers/CanvasRenderer.js"></script>
<script src="js/libs/stats.min.js"></script>
<style>
body {
font-family: Monospace;
background-color: #f0f0f0;
margin: 0px;
overflow: hidden;
}
</style>
</head>
<body onload="threeStart();">
<div id="container"></div>
<script>
var renderer,camera,scene,container,stats,
cube,group;
function threeStart(){
container = document.getElementById('container');
renderer = new THREE.CanvasRenderer();
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth,window.innerHeight);
container.appendChild(renderer.domElement);
//创建新的字体
var loader = new THREE.FontLoader();
loader.load('helvetiker_regular.typeface.json',function(fonts){
initCamera();
initScene();
initLight();
initObject(fonts);
animation();
});
}
//相机
function initCamera(){
camera = new THREE.PerspectiveCamera(75,window.innerWidth / window.innerHeight,1,1000);
camera.position.set(0,150,500);
}
//场景
function initScene(){
scene = new THREE.Scene();
scene.background = new THREE.Color(0xf0f0f0);
}
function initLight(){
}
function initObject(fonts){
var geometry = new THREE.TextGeometry('hello three.js!',{
size: 80, //字号大小,一般为大写字母的高度
height: 10, //文字的厚度
weight: 'normal', //值为'normal'或'bold',表示是否加粗
font: fonts, //字体,默认是'helvetiker',需对应引用的字体文件
style: 'normal', //值为'normal'或'italics',表示是否斜体
bevelThickness: 1, //倒角厚度
bevelSize: 1, //倒角宽度
curveSegments: 2,//弧线分段数,使得文字的曲线更加光滑(很吃性能)
bevelEnabled: true, //布尔值,是否使用倒角,意为在边缘处斜切
});
geometry.computeBoundingBox();////重新计算当前Geometry对象的立方体界限 注意这样才有max min值
var centerOffset = (geometry.boundingBox.max.x - geometry.boundingBox.min.x ) * -0.5;
var materials = [
new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff, overdraw: 0.5 } ),
new THREE.MeshBasicMaterial( { color: 0x000000, overdraw: 0.5 } )
];
cube = new THREE.Mesh(geometry,materials);
cube.position.x = centerOffset;
group = new THREE.Group();//创建一个组,测试如果不加入组无法如以中心旋转而是从min位置旋转
group.add(cube);
scene.add(group);
stats = new Stats();
container.appendChild(stats.dom);
}
function animation(){
requestAnimationFrame(animation);
renderer.render(scene,camera);
stats.update();
var timer = Date.now() * 0.001;
group.rotation.y += Math.cos(THREE.Math.degToRad(timer)) * 0.05;
}
</script>
</body>
</html>
相关文章推荐
- three.js旋转的360全景canvas_geometry_panorama
- three.js旋转的方块canvas_geometry_cube
- JS实现固定在网页右上角3D风格旋转文字
- 48 Three.js使用THREE.TextGeometry创建三维文本
- three.js第四篇【创建3D文字】
- THREE.js 第三部分 canvas_geometry_birds.html
- three.js旋转的场景canvas_camera_orthographic
- three.js 源码注释(七十三)extras/geometries/TextGeometry.js
- 49 Three.js使用THREE.TextGeometry创建三维文本解决中文乱码的问题
- Three.js学习之文字形状及自定义形状
- Android TextView文字旋转45°
- 前端工程师必会的技能-three.js 3D显示功能
- three.js、webGL、canvas区别于关联
- Canvas.drawText绘制文字为什么会偏上?
- 三维空间旋转和Three.JS中的实现
- three.js 06-02 之 LatheGeometry 高级几何体
- Three.js 第一篇:绘制一个静态的3D球体
- Android自定义View练习,文字圆环排列的TextView,可旋转
- three.js 实现3D漫游
- js 旋转文字