Guest User

Untitled

a guest
Nov 20th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.92 KB | None | 0 0
  1. <!DOCTYPE html>
  2.  
  3. <html>
  4.  
  5. <head>
  6. <title>Example 06.07 - Text geometry</title>
  7. <script type="text/javascript" src="../libs/three.js"></script>
  8.  
  9. <script type="text/javascript" src="../libs/stats.js"></script>
  10. <script type="text/javascript" src="../libs/dat.gui.js"></script>
  11. <script type="text/javascript" src="../assets/fonts/helvetiker_regular.typeface.js"></script>
  12. <script type="text/javascript" src="../assets/fonts/helvetiker_bold.typeface.js"></script>
  13. <script type="text/javascript" src="../assets/fonts/bitstream_vera_sans_mono_roman.typeface.js"></script>
  14.  
  15. <style>
  16. body {
  17. /* set margin to 0 and overflow to hidden, to go fullscreen */
  18. margin: 0;
  19. overflow: hidden;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24.  
  25. <div id="Stats-output">
  26. </div>
  27. <!-- Div which will hold the Output -->
  28. <div id="WebGL-output">
  29. </div>
  30.  
  31. <!-- Javascript code that runs our Three.js examples -->
  32. <script type="text/javascript">
  33. // once everything is loaded, we run our Three.js stuff.
  34. function init() {
  35. var stats = initStats();
  36. // create a scene, that will hold all our elements such as objects, cameras and lights.
  37. var scene = new THREE.Scene();
  38. // create a camera, which defines where we're looking at.
  39. var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);
  40. // create a render and set the size
  41. var webGLRenderer = new THREE.WebGLRenderer();
  42. webGLRenderer.setClearColor(new THREE.Color(0x000000, 1.0));
  43. webGLRenderer.setSize(window.innerWidth, window.innerHeight);
  44. webGLRenderer.shadowMapEnabled = true;
  45. // position and point the camera to the center of the scene
  46. camera.position.x = 100;
  47. camera.position.y = 300;
  48. camera.position.z = 600;
  49. camera.lookAt(new THREE.Vector3(400, 0, -300));
  50. var dirLight = new THREE.DirectionalLight();
  51. dirLight.position.set(25, 23, 15);
  52. scene.add(dirLight);
  53. var dirLight2 = new THREE.DirectionalLight();
  54. dirLight2.position.set(-25, 23, 15);
  55. scene.add(dirLight2);
  56. // add the output of the renderer to the html element
  57. document.getElementById("WebGL-output").appendChild(webGLRenderer.domElement);
  58. // call the render function
  59. var step = 0;
  60. var text1;
  61. var text2;
  62. var controls = new function () {
  63. this.size = 90;
  64. this.height = 90;
  65. this.bevelThickness = 2;
  66. this.bevelSize = 0.5;
  67. this.bevelEnabled = true;
  68. this.bevelSegments = 3;
  69. this.bevelEnabled = true;
  70. this.curveSegments = 12;
  71. this.steps = 1;
  72. this.font = "helvetiker";
  73. this.weight = "normal";
  74. // this.style = "italics";
  75. this.asGeom = function () {
  76. // remove the old plane
  77. scene.remove(text1);
  78. scene.remove(text2);
  79. // create a new one
  80. var options = {
  81. size: controls.size,
  82. height: controls.height,
  83. weight: controls.weight,
  84. font: controls.font,
  85. bevelThickness: controls.bevelThickness,
  86. bevelSize: controls.bevelSize,
  87. bevelSegments: controls.bevelSegments,
  88. bevelEnabled: controls.bevelEnabled,
  89. curveSegments: controls.curveSegments,
  90. steps: controls.steps
  91. };
  92. console.log(THREE.FontUtils.faces);
  93. text1 = createMesh(new THREE.TextGeometry("Learning", options));
  94. text1.position.z = -100;
  95. text1.position.y = 100;
  96. scene.add(text1);
  97. text2 = createMesh(new THREE.TextGeometry("Three.js", options));
  98. scene.add(text2);
  99. };
  100. };
  101. controls.asGeom();
  102. var gui = new dat.GUI();
  103. gui.add(controls, 'size', 0, 200).onChange(controls.asGeom);
  104. gui.add(controls, 'height', 0, 200).onChange(controls.asGeom);
  105. gui.add(controls, 'font', ['bitstream vera sans mono', 'helvetiker']).onChange(controls.asGeom);
  106. gui.add(controls, 'bevelThickness', 0, 10).onChange(controls.asGeom);
  107. gui.add(controls, 'bevelSize', 0, 10).onChange(controls.asGeom);
  108. gui.add(controls, 'bevelSegments', 0, 30).step(1).onChange(controls.asGeom);
  109. gui.add(controls, 'bevelEnabled').onChange(controls.asGeom);
  110. gui.add(controls, 'curveSegments', 1, 30).step(1).onChange(controls.asGeom);
  111. gui.add(controls, 'steps', 1, 5).step(1).onChange(controls.asGeom);
  112. render();
  113. function createMesh(geom) {
  114. // assign two materials
  115. // var meshMaterial = new THREE.MeshLambertMaterial({color: 0xff5555});
  116. // var meshMaterial = new THREE.MeshNormalMaterial();
  117. var meshMaterial = new THREE.MeshPhongMaterial({
  118. specular: 0xffffff,
  119. color: 0xeeffff,
  120. shininess: 100,
  121. metal: true
  122. });
  123. // meshMaterial.side=THREE.DoubleSide;
  124. // create a multimaterial
  125. var plane = THREE.SceneUtils.createMultiMaterialObject(geom, [meshMaterial]);
  126. return plane;
  127. }
  128. function render() {
  129. stats.update();
  130. requestAnimationFrame(render);
  131. webGLRenderer.render(scene, camera);
  132. }
  133. function initStats() {
  134. var stats = new Stats();
  135. stats.setMode(0); // 0: fps, 1: ms
  136. // Align top-left
  137. stats.domElement.style.position = 'absolute';
  138. stats.domElement.style.left = '0px';
  139. stats.domElement.style.top = '0px';
  140. document.getElementById("Stats-output").appendChild(stats.domElement);
  141. return stats;
  142. }
  143. }
  144. window.onload = init;
  145. </script>
  146. </body>
  147. </html>
Add Comment
Please, Sign In to add comment