您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. function quick_key2(ev){
  2. var qmap = {
  3. "w":["y",1],
  4. "s":["y",-1],
  5. "d":["x",1],
  6. "a":["x",-1],
  7. "q":["z",1],
  8. "e":["z",-1],
  9. }
  10. var obj_groups = glob_u.data.o3.obj_arrs
  11. var key = ev.key.toLowerCase()
  12. var o = qmap[key]
  13. if (o){
  14. var o3 = obj_groups.select_1x
  15. // obj_groups.select_1
  16. clog(obj_groups.select_1)
  17. o3.object.position[o[0]] += o[1] * .008
  18. }
  19. clog("qk/2",o,key,qmap)
  20. switch(ev.key.toLowerCase()){
  21. case "w":
  22. case "a":
  23. case "s":
  24. case "d":
  25. }
  26. // clog("qk/2")
  27. }
  28. function select_highlight(obj,color="#ff0"){
  29. var circle
  30. var r = {}
  31. var geometry,circle,material
  32. geometry = new THREE.CircleGeometry( .12, 3 );
  33. geometry = new THREE.CircleGeometry( .12, 3.1 );
  34. geometry = new THREE.CircleGeometry( .12, 12.9 );
  35. material = new THREE.MeshBasicMaterial( {color,opacity: 0.5,transparent:true,
  36. } );
  37. material.side = THREE.DoubleSide
  38. circle = new THREE.Mesh( geometry, material );
  39. r.material=material
  40. r.circle=circle
  41. var obj_groups = glob_u.data.o3.obj_arrs
  42. r.circle.position.x = obj.object.position.x
  43. r.circle.position.y = obj.object.position.y
  44. r.circle.position.z = obj.object.position.z +.00001
  45. r.circle.position.z = obj.object.position.z +.0000001
  46. r.circle.position.z = obj.object.position.z -.00001
  47. scene.add(r.circle)
  48. scene.remove(obj_groups.select_1)
  49. obj_groups.select_1 = r.circle
  50. obj_groups.select_1x = obj
  51. r.circle.tx1="select_1"
  52. glob_u.cb.ord.run_cbs("add_scene_obj",{o3d:r.circle})
  53. }
  54. function rcast() {
  55. clog("...")
  56. var raycaster = new THREE.Raycaster();
  57. raycaster.setFromCamera( pointer, camera );
  58. clog(raycaster)
  59. var intersects = raycaster.intersectObjects( scene.children, false )
  60. // fn(raycaster)
  61. var obj_groups = glob_u.data.o3.obj_arrs
  62. for (o of intersects){
  63. if (o.object.tx1){
  64. continue
  65. }
  66. clog(o)
  67. select_highlight(o)
  68. return
  69. }
  70. }
  71. function add_scene_obj(o,scope,info) {
  72. // clog("add_scene_obj",{o,scope,info})
  73. }
  74. function discard_scene_obj(o,scope,info) {
  75. // clog("discard_scene_obj",{o,scope,info})
  76. // clog("aaaaaaaaaa")
  77. }
  78. // {o3d:}
  79. // clog("??????????????????????????????????????????????/..~")
  80. glob_u.cb.ord.reg_cb(add_scene_obj,"add_scene_obj","")
  81. glob_u.cb.ord.reg_cb(discard_scene_obj,"discard_scene_obj","")
  82. // merge_partial_template()
  83. function fn(raycaster){
  84. cnt = Math.round(Math.random())
  85. cnt=0
  86. cnt2=0
  87. for (o of scene.children){
  88. if (!cnt2){
  89. clog(o,cnt)
  90. }
  91. cnt2 += 1
  92. cnt = !cnt
  93. // o.rotation.x = Math.random() * Math.PI /2
  94. // o.rotation.x = Math.PI * Math.round(Math.random()) * 2
  95. if (cnt || 1) {
  96. o.rotation.z = raycaster.ray.origin.z
  97. o.rotation.x = raycaster.ray.origin.x
  98. o.rotation.y = raycaster.ray.origin.y
  99. o.rotation.z = raycaster.ray.direction.z
  100. o.rotation.x = raycaster.ray.direction.x
  101. o.rotation.y = raycaster.ray.direction.y
  102. o.rotation.z = raycaster.camera.rotation.z
  103. o.rotation.x = raycaster.camera.rotation.x
  104. o.rotation.y = raycaster.camera.rotation.y
  105. } else {
  106. o.rotation.x = 0
  107. o.rotation.y = 0
  108. o.rotation.z = 0
  109. }
  110. // o.rotation.x = 1 * Math.round(Math.random()) * 2
  111. }
  112. }
  113. // fn()
  114. function fn2(){
  115. var en
  116. var doomed=[]
  117. for (en of scene.children){
  118. if (en.tx1){
  119. doomed.push(en)
  120. }
  121. }
  122. for (en of doomed){
  123. scene.remove(en)
  124. }
  125. }
  126. fn2()