Advertisement
Guest User

Untitled

a guest
Dec 17th, 2018
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. var cubo = null
  2. var materialInicial = null
  3. var corIncial = null
  4. var candidatos = []
  5. var rato = null
  6.  
  7. var cena = new THREE.Scene()
  8.  
  9. var camara = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.1, 500)
  10. camara.position.x = 4
  11. camara.position.y = 3
  12. camara.position.z = 2
  13. //camara.position.set(4,3,2)
  14.  
  15.  
  16. var minhaJanela = document.getElementById( 'meuCanvas' )
  17.  
  18. var renderer = new THREE.WebGLRenderer( { canvas: minhaJanela } )
  19.  
  20. renderer.setSize( window.innerWidth, window.innerHeight )
  21.  
  22. document.body.appendChild( renderer.domElement )
  23.  
  24. renderer.shadowMap.enabled = true
  25.  
  26. var controlos = new THREE.OrbitControls( camara, renderer.domElement)
  27.  
  28. var carregador = new THREE.GLTFLoader()
  29.  
  30. var raycaster = new THREE.Raycaster()
  31.  
  32. var rato = new THREE.Vector2()
  33.  
  34. carregador.load( 'cena.gltf', function ( gltf ) {
  35. cena.add( gltf.scene )
  36.  
  37. cubo = cena.getObjectByName('Cubo')
  38. materialInicial = cubo.material
  39. corIncial = cubo.material.color
  40.  
  41. candidatos.push(cena.getObjectByName('Botao1'))
  42. candidatos.push(cena.getObjectByName('Botao2'))
  43. candidatos.push(cena.getObjectByName('Botao3'))
  44. candidatos.push(cena.getObjectByName('Botao4'))
  45.  
  46. cena.traverse( function (elemento) {
  47. if (elemento.isMesh) {
  48. elemento.castShadow = true
  49. elemento.receiveShadow = true
  50. }
  51. });
  52. })
  53.  
  54. var luzPonto1 = new THREE.PointLight( "white" )
  55. luzPonto1.position.set( 5, 6, 0 )
  56. luzPonto1.castShadow = true
  57. cena.add( luzPonto1 )
  58.  
  59. window.onclick = function(evento) {
  60. rato.x = (evento.clientX / window.innerWidth) * 2 - 1
  61. rato.y = -(evento.clientY / window.innerHeight) * 2 + 1
  62. // invocar raycaster
  63. pegarPrimeiro()
  64. }
  65.  
  66. function pegarPrimeiro() {
  67. raycaster.setFromCamera(rato, camara)
  68.  
  69. var intersetados = raycaster.intersectObjects(candidatos)
  70. if (intersetados.length > 0) {
  71. // fazer o que houver a fazer com o primeiro interesetado
  72. //. . . interesetado[0].object . . .
  73. cubo.material = intersetados[0].object.material
  74. }
  75. }
  76.  
  77.  
  78. document.getElementById('btn_cor').addEventListener('click', mudarCor)
  79. function mudarCor(){
  80. cubo.material = new THREE.MeshStandardMaterial()
  81. cubo.material.color = new THREE.Color('yellow')
  82. }
  83.  
  84. document.getElementById('btn_material').addEventListener('click', mudarMaterial)
  85. function mudarMaterial(){
  86. cubo.material = new THREE.MeshNormalMaterial()
  87. }
  88.  
  89. document.getElementById('btn_vis').addEventListener('click', mudarVisiblidade)
  90. function mudarVisiblidade(){
  91. cubo.visible = !cubo.visible
  92. }
  93.  
  94. document.getElementById('btn_transparencia').addEventListener('click', mudarTransparencia)
  95. function mudarTransparencia(){
  96. cubo.transparent = true
  97. cubo.material.opacity = 0.5
  98.  
  99. }
  100.  
  101. document.getElementById('btn_repor').addEventListener('click', repor)
  102. function repor(){
  103. cubo.material = materialInicial
  104. cubo.material.color = corIncial
  105. cubo.transparent = false
  106. cubo.visible = true
  107. }
  108.  
  109. animar()
  110.  
  111. function animar(){
  112. requestAnimationFrame(animar)
  113. renderer.render(cena, camara)
  114. }
  115.  
  116.  
  117. //renderer.render( cena, camara )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement