You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. // "use strict";
  2. var THREE
  3. var renderer
  4. var camera
  5. var scene
  6. THREE = z.THREE
  7. renderer = z.renderer
  8. camera = z.camera
  9. scene = z.scene
  10. function resize_canvas(){
  11. camera.aspect = window.innerWidth / window.innerHeight;
  12. camera.updateProjectionMatrix();
  13. renderer.setPixelRatio(window.devicePixelRatio);
  14. renderer.setSize(window.innerWidth, window.innerHeight);
  15. // renderer.setSize(window.innerWidth * .9, window.innerHeight * .9);
  16. }
  17. resize_canvas()
  18. var pointer = window.pointer || new THREE.Vector2();
  19. function mx2(){
  20. var raycaster = new THREE.Raycaster();
  21. // raycaster.params.Line.threshold = 30;
  22. // raycaster.params.Mesh.threshold = 30;
  23. window.raycaster=raycaster
  24. // var intersects = raycaster.intersectObjects( scene.children, true );
  25. // var intersects = raycaster.intersectObjects( scene.children, true );
  26. // var intersects = raycaster.intersectObjects( scene.children.slice(4), true );
  27. // var intersects = raycaster.intersectObjects( scene.children.slice(4), false );
  28. raycaster.setFromCamera( pointer, camera );
  29. var intersects = raycaster.intersectObjects( scene.children, false );
  30. // var intersects = raycaster.intersectObjects( scene.children.slice(0), false );
  31. clog({raycaster,intersects})
  32. }
  33. z.jnk= z.jnk||{}
  34. /*
  35. glob_u.data.o3 = glob_u.data.o3 || {
  36. obj_arrs:{
  37. select:[],
  38. }
  39. }
  40. */
  41. // merge_partial_template(glob_u.data.o3,{
  42. merge_partial_template(glob_u.data,{o3:{
  43. // / no longer just arrays rename eventually
  44. obj_arrs:{
  45. select:[],
  46. // s2:new Set([1,2,4]),
  47. },
  48. select_1:null,
  49. // glob_u.data.o3
  50. }})
  51. function mx3c(obj,color="#0000ff",zz=0) {
  52. // clog(obj)
  53. // body...
  54. // circle_tent_gen
  55. var circle
  56. var r = {}
  57. var geometry,circle,material
  58. geometry = new THREE.CircleGeometry( .12, 32 );
  59. // material = new THREE.MeshBasicMaterial( {map:new THREE.TextureLoader().load(profs[1])} );
  60. // material = new THREE.MeshLambertMaterial( );
  61. // material = new THREE.MeshPhongMaterial( );
  62. // material = new THREE.MeshBasicMaterial( {color:"#0000ff",opacity: 0.5,transparent:true,
  63. material = new THREE.MeshBasicMaterial( {color,opacity: 0.5,transparent:true,
  64. } );
  65. material.side = THREE.DoubleSide
  66. circle = new THREE.Mesh( geometry, material );
  67. r.material=material
  68. r.circle=circle
  69. r.circle.position.x = obj.object.position.x
  70. r.circle.position.y = obj.object.position.y
  71. // if (color =="#0000ff"){
  72. if (zz ==0){
  73. // r.circle.position.z = obj.object.position.z -.00000000000000000000000000001
  74. r.circle.position.z = obj.object.position.z +.01
  75. r.circle.position.z = obj.object.position.z +.000001
  76. } else {
  77. r.circle.position.z = obj.object.position.z +.000000000000000000001
  78. // r.circle.position.z = obj.object.position.z +.01
  79. // r.circle.position.z = obj.object.position.z +.01
  80. r.circle.position.x = obj.point.x
  81. r.circle.position.y = obj.point.y
  82. r.circle.position.z = obj.point.z +.0101
  83. }
  84. // r.circle.position.z = obj.object.position.z
  85. r.circle.tx1="circle_select"
  86. // r.circle.
  87. scene.add(r.circle)
  88. glob_u.cb.ord.run_cbs("add_scene_obj",{o3d:r.circle})
  89. glob_u.data.o3.obj_arrs.select.push(r.circle)
  90. // clog("mxc",obj.object,r.circle,{r,obj})
  91. return r
  92. }
  93. function clear_select(argument) {
  94. // body...
  95. for (var en of glob_u.data.o3.obj_arrs.select){
  96. scene.remove(en)
  97. glob_u.cb.ord.run_cbs("discard_scene_obj",{o3d:en})
  98. }
  99. glob_u.data.o3.obj_arrs.select=[]
  100. }
  101. // function select_first(){}
  102. // glob_u.cb.ord.run_cbs("add_scene_obj",{o3d:""})
  103. // glob_u.cb.ord.run_cbs("discard_scene_obj",{o3d:""})
  104. function mx3(){
  105. var raycaster = new THREE.Raycaster();
  106. raycaster.setFromCamera( pointer, camera );
  107. var intersects = raycaster.intersectObjects( scene.children, false )
  108. // clog("mx3",intersects)
  109. z.jnk.intersects=intersects
  110. var o
  111. // clog("mx3??",intersects)
  112. // scene.
  113. clear_select()
  114. obj_groups = glob_u.data.o3.obj_arrs
  115. for (o of intersects){
  116. }
  117. obj_groups.iset1 = new Set(intersects)
  118. var iset1=obj_groups.iset1
  119. if (!obj_groups.iset2){
  120. obj_groups.iset2 = new Set(iset1)
  121. }
  122. // clog(obj_groups.iset2.symmetricDifference(iset1).size)
  123. colors = ["red","blue","green","yellow","teal","aquamarine"]
  124. colors = ["red","blue","green","yellow","aquamarine"]
  125. colors = ["red","blue","aquamarine"]
  126. for (o of intersects){
  127. if (o.object.tx1){
  128. continue
  129. }
  130. // mx3c(o,colors.pop())
  131. // mx3c(o,"blue")
  132. // mx3c(o)
  133. // mx3c(o,"#00ffff")
  134. // mx3c(o,"#f00")
  135. mx3c(o,colors.pop()|| "black")
  136. // mx3c(o,colors.pop())
  137. // mx3c(o,"#00f",1)
  138. continue
  139. // clog(o)
  140. // return
  141. // o.object.material.emissive.setHex( 0xff0000 );aaaaaa
  142. clog(o.object.material,o.object)
  143. o.object.material.lightMapIntensity=.1
  144. o.object.material.blendColor.b=255
  145. o.object.material.alphaHash=true
  146. o.object.material.blendAlpha=2
  147. // o.object.material.combine=THREE.MixOperation
  148. o.object.material.combine=THREE.AddOperation
  149. o.object.material.reflectivity=.4
  150. // o.object.material.vertexColors=true
  151. o.object.material.wireframe=true
  152. o.object.material.opacity=0
  153. o.object.castShadow=true
  154. // o.object.material.refractionRatio=2
  155. }
  156. obj_groups.iset2 = new Set(iset1)
  157. // var intersects = raycaster.intersectObjects( scene.children, false );
  158. }
  159. function mx1(){
  160. const pointer = new THREE.Vector2();
  161. var raycaster = new THREE.Raycaster();
  162. raycaster.params.Line.threshold = 3;
  163. raycaster.setFromCamera( pointer, camera );
  164. const intersects = raycaster.intersectObjects( parentTransform.children, true );
  165. const geometry = new THREE.SphereGeometry( 5 );
  166. const material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
  167. sphereInter = new THREE.Mesh( geometry, material );
  168. sphereInter.visible = false;
  169. scene.add( sphereInter );
  170. if ( intersects.length > 0 ) {
  171. sphereInter.visible = true;
  172. sphereInter.position.copy( intersects[ 0 ].point );
  173. } else {
  174. sphereInter.visible = false;
  175. }
  176. }
  177. function onPointerMove( event ) {
  178. pointer.x = ( event.clientX / window.innerWidth ) * 2 - 1;
  179. pointer.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
  180. // mx3()
  181. // clog(pointer)
  182. }
  183. // function onwheel(ev){
  184. glob_u.tvar.cnt = 0
  185. glob_u.tvar.s = ""
  186. function quick_wheel(ev){
  187. glob_u.tvar.cnt += 1
  188. glob_u.tvar.s += "="
  189. if (!(glob_u.tvar.cnt / 175 + "").includes(".")){
  190. glob_u.tvar.s = ""
  191. }
  192. if (ev.deltaX > 0){
  193. rcast(ev)
  194. }
  195. // clog(glob_u.tvar.cnt,glob_u.tvar.s ,ev.deltaX,(glob_u.tvar.cnt / 25 + ""))
  196. // clog(glob_u.tvar.cnt,(glob_u.tvar.cnt / 25 + ""))
  197. // clog("QW",ev.type,ev.deltaX ? "A" : "B",ev.deltaX === 0.0 ,ev)
  198. }
  199. // function quick_key(ev){
  200. function quick_key(ev){
  201. switch(ev.type){
  202. }
  203. // clog("QK",ev.type,ev.key,ev)
  204. // window.
  205. // quick_key2(ev)
  206. switch(ev.key){
  207. // case "a":
  208. // case "b":
  209. case " ":
  210. rcast(ev)
  211. // rcast(ev)
  212. // mx3(ev)
  213. // clog(";;;;;")
  214. break;
  215. case "s":
  216. // find_hover_cards()
  217. // z1 = $(".mx_hover_tag")[0]
  218. break;
  219. }
  220. }
  221. onmousewheel = quick_wheel
  222. onauxclick = quick_wheel
  223. onclick = quick_wheel
  224. ondblclick = quick_wheel
  225. onkeydown = quick_key
  226. onkeyup = quick_key
  227. onkeypress = quick_key
  228. onpointermove = onPointerMove
  229. // document.addEventListener( 'pointermove', onPointerMove );