2622f39d1c7a5bd69f517c7bbed1b7ed1db5bb4c.svn-base 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import * as THREE from 'three'
  2. global.THREE = THREE
  3. require('three/examples/js/controls/OrbitControls')
  4. var dom = document.querySelector('#test')
  5. var scene = new THREE.Scene();
  6. var camera = new THREE.PerspectiveCamera(75, dom.offsetWidth / dom.offsetHeight, 0.1, 1000);
  7. camera.position.z = 150;
  8. var controls = new THREE.OrbitControls(camera, dom);
  9. var renderer = new THREE.WebGLRenderer({ antialias: true });
  10. renderer.setSize(dom.offsetWidth, dom.offsetHeight);
  11. dom.appendChild(renderer.domElement);
  12. var f = null
  13. var loader = new THREE.FontLoader();
  14. loader.load('http://localhost:3000/helvetiker_regular.typeface.json', function (font) {
  15. var boxGeometry = new THREE.BoxBufferGeometry(50, 50, 50);
  16. var y = getMaxHeight(boxGeometry.attributes.position.array) + 40
  17. var material = new THREE.MeshBasicMaterial({ color: 0x000000 })
  18. var geometry = new THREE.TextBufferGeometry('Hello three.js!', {
  19. font: font,
  20. size: 12,
  21. height: 1
  22. });
  23. f = new THREE.Mesh(geometry, material)
  24. f.position.set(
  25. -getWidth(geometry.attributes.position.array) / 2,
  26. y,
  27. 0
  28. )
  29. scene.add(f)
  30. scene.add(
  31. new THREE.Mesh(boxGeometry, material)
  32. )
  33. });
  34. function getMaxHeight(verticesBuffArrays) {
  35. let maxHeight = verticesBuffArrays[2]
  36. let len = verticesBuffArrays.length
  37. for (let i = 3; i < len; i += 3) {
  38. if (maxHeight < verticesBuffArrays[i + 2]) {
  39. maxHeight = verticesBuffArrays[i + 2]
  40. }
  41. }
  42. return maxHeight
  43. }
  44. function getWidth(verticesBuffArrays) {
  45. let args = {
  46. minWidth: verticesBuffArrays[0],
  47. maxWidth: verticesBuffArrays[0]
  48. }
  49. let len = verticesBuffArrays.length
  50. for (let i = 3; i < len; i += 3) {
  51. if (args.maxWidth < verticesBuffArrays[i]) {
  52. args.maxWidth = verticesBuffArrays[i]
  53. }
  54. if (args.minWidth > verticesBuffArrays[i]) {
  55. args.minWidth = verticesBuffArrays[i]
  56. }
  57. }
  58. return args.maxWidth - args.minWidth
  59. }
  60. renderer.setClearColor(0xffffff)
  61. function animate() {
  62. controls.update();
  63. // console.log(f && f.quaternion)
  64. f && f.quaternion.copy(camera.quaternion)
  65. // console.log(camera.quaternion)
  66. f && f.scale.copy(camera.scale)
  67. // f && f.scale.copy(camera.scale)
  68. // up
  69. f && f.rotation.copy(camera.rotation)
  70. requestAnimationFrame(animate);
  71. renderer.render(scene, camera);
  72. }
  73. animate();