Guest User

Untitled

a guest
Mar 23rd, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.63 KB | None | 0 0
  1. // this class handles the load and the canva for a nrrd
  2. // Using programming based on prototype: https://javascript.info/class
  3. // This class should be improved:
  4. // - Canvas Width and height
  5.  
  6. InitCanvas = function (IdDiv, Filename) {
  7.  
  8.  
  9. this.IdDiv = IdDiv;
  10. this.Filename = Filename
  11. }
  12.  
  13. InitCanvas.prototype = {
  14.  
  15. constructor: InitCanvas,
  16.  
  17. init: function () {
  18.  
  19. this.container = document.getElementById(this.IdDiv);
  20.  
  21. // this should be changed.
  22. debugger;
  23. this.container.innerHeight = 600;
  24. this.container.innerWidth = 800;
  25.  
  26. //These statenments should be changed to improve the image position
  27. this.camera = new THREE.PerspectiveCamera(60, this.container.innerWidth / this.container.innerHeight, 0.01, 1e10);
  28. this.camera.position.z = 300;
  29.  
  30. let scene = new THREE.Scene();
  31. scene.add(this.camera);
  32.  
  33. // light
  34.  
  35. let dirLight = new THREE.DirectionalLight(0xffffff);
  36. dirLight.position.set(200, 200, 1000).normalize();
  37.  
  38. this.camera.add(dirLight);
  39. this.camera.add(dirLight.target);
  40.  
  41.  
  42. // read file
  43.  
  44. let loader = new THREE.NRRDLoader();
  45. loader.load(this.Filename, function (volume) {
  46.  
  47. //z plane
  48. let sliceZ = volume.extractSlice('z', Math.floor(volume.RASDimensions[2] / 4));
  49.  
  50. debugger;
  51. this.container.innerWidth = sliceZ.iLength;
  52. this.container.innerHeight = sliceZ.jLength;
  53.  
  54. sliceZ.mesh.material.color.setRGB(0,1,1);
  55.  
  56.  
  57. console.log('Our slice is: ', sliceZ);
  58.  
  59. scene.add(sliceZ.mesh);
  60. this.scene = scene;
  61.  
  62. // renderer
  63.  
  64. this.renderer = new THREE.WebGLRenderer({alpha: true});
  65. this.renderer.setPixelRatio(this.container.devicePixelRatio);
  66. debugger;
  67. this.container.appendChild(this.renderer.domElement);
  68. }.bind(this));
  69.  
  70.  
  71.  
  72.  
  73.  
  74. },
  75.  
  76. animate: function () {
  77.  
  78. this.renderer.render(this.scene, this.camera);
  79. }
  80.  
  81. }
  82.  
  83. this.container.innerWidth = sliceZ.iLength;
  84. this.container.innerHeight = sliceZ.jLength;
  85.  
  86. Uncaught TypeError: Cannot read property 'render' of undefined
  87. at InitCanvas.animate (InitCanvas.js:79)
  88. at animate (logic.js:63)
  89.  
  90. if (!Detector.webgl) Detector.addGetWebGLMessage();
  91.  
  92. // global variables for this scripts
  93. let OriginalImg,
  94. SegmentImg;
  95.  
  96. var mouse = new THREE.Vector2();
  97. var raycaster = new THREE.Raycaster();
  98. var mousePressed = false;
  99. var clickCount = 0;
  100.  
  101.  
  102. init();
  103. animate();
  104.  
  105.  
  106. // initilize the page
  107. function init() {
  108. let filename = "models/nrrd/columna01.nrrd"; // change your nrrd file
  109. let idDiv = 'original';
  110. OriginalImg = new InitCanvas(idDiv, filename);
  111. OriginalImg.init();
  112. console.log(OriginalImg);
  113.  
  114. filename = "models/nrrd/columnasegmentado01.nrrd"; // change your nrrd file
  115. idDiv = 'segment';
  116. SegmentImg = new InitCanvas(idDiv, filename);
  117. SegmentImg.init();
  118. }
  119.  
  120. let originalCanvas = document.getElementById('original');
  121. originalCanvas.addEventListener('mousedown', onDocumentMouseDown, false);
  122. originalCanvas.addEventListener('mouseup', onDocumentMouseUp, false);
  123.  
  124.  
  125. function onDocumentMouseDown(event) {
  126. mousePressed = true;
  127.  
  128. clickCount++;
  129.  
  130. mouse.x = ( ( event.clientX - OriginalImg.renderer.domElement.offsetLeft ) / OriginalImg.renderer.domElement.clientWidth ) * 2 - 1;
  131. mouse.y = - ( ( event.clientY - OriginalImg.renderer.domElement.offsetTop ) / OriginalImg.renderer.domElement.clientHeight ) * 2 + 1
  132.  
  133. console.log('Mouse x position is: ', mouse.x, 'the click number was: ', clickCount);
  134. console.log('Mouse Y position is: ', mouse.y);
  135.  
  136. raycaster.setFromCamera(mouse.clone(), OriginalImg.camera);
  137. var objects = raycaster.intersectObjects(OriginalImg.scene.children);
  138.  
  139. console.log(objects);
  140. }
  141.  
  142. function onDocumentMouseUp(event) {
  143. mousePressed = false
  144. }
  145.  
  146.  
  147. function animate() {
  148.  
  149.  
  150. requestAnimationFrame(animate);
  151. OriginalImg.animate();
  152. SegmentImg.animate();
  153.  
  154.  
  155. }
  156.  
  157. <!DOCTYPE html>
  158. <html lang="en">
  159. <head>
  160. <title>Prototype: three.js without react.js</title>
  161. <meta charset="utf-8">
  162. <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
  163. <link rel="stylesheet" href="css/styles.css">
  164.  
  165. <!-- load the libraries and js -->
  166. <script src="js/libs/three.js"></script>
  167.  
  168. <script src="js/Volume.js"></script>
  169. <script src="js/VolumeSlice.js"></script>
  170. <script src="js/loaders/NRRDLoader.js"></script>
  171.  
  172. <script src="js/Detector.js"></script>
  173. <script src="js/libs/stats.min.js"></script>
  174. <script src="js/libs/gunzip.min.js"></script>
  175. <script src="js/libs/dat.gui.min.js"></script>
  176.  
  177. <script src="js/InitCanvas.js"></script>
  178.  
  179.  
  180. </head>
  181.  
  182. <body>
  183. <div id="info">
  184. <h1>Prototype: three.js without react.js</h1>
  185. </div>
  186.  
  187. <!-- two canvas -->
  188. <div class="row">
  189. <div class="column" id="original">
  190. </div>
  191.  
  192. <div class="column" id="segment">
  193.  
  194. </div>
  195. </div>
  196.  
  197. <script src="js/logic.js"></script>
  198.  
  199. </body>
  200. </html>
  201.  
  202. body {
  203. font-family: Monospace;
  204. margin: 0px;
  205. overflow: hidden;
  206. }
  207.  
  208. #info {
  209. color: rgb(137, 145, 192);
  210. position: absolute;
  211. top: 10px;
  212. width: 100%;
  213. text-align: center;
  214. z-index: 5;
  215. display:block;
  216. }
  217.  
  218. .column {
  219. float: left;
  220. width: 50%;
  221. }
  222.  
  223. /* Clear floats after the columns */
  224. .row:after {
  225. content: "";
  226. display: table;
  227. clear: both;
  228. }
  229.  
  230. canvas {
  231. width: 200px;
  232. height: 200px;
  233. margin: 100px;
  234. padding: 0px;
  235. position: static; /* fixed or static */
  236. top: 100px;
  237. left: 100px;
  238. }
Add Comment
Please, Sign In to add comment