Advertisement
Guest User

Blend4web - 3D visualizer

a guest
Aug 1st, 2018
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. "use strict"
  2.  
  3. // register the application module
  4. b4w.register("cube_graphe_main", function(exports, require) {
  5.  
  6. // import modules used by the app
  7. var m_app       = require("app");
  8. var m_cfg       = require("config");
  9. var m_data      = require("data");
  10. var m_preloader = require("preloader");
  11. var m_ver       = require("version");
  12. var m_scenes    = require("scenes");
  13. var m_obj       = require("objects");
  14. var m_logic     = require("logic_nodes");
  15. var m_transform = require("transform");
  16. var m_mat       = require("material");
  17.  
  18. var arrayOfCube = [];
  19.  
  20. // detect application mode
  21. var DEBUG = (m_ver.type() == "DEBUG");
  22.  
  23. // automatically detect assets path
  24. var APP_ASSETS_PATH = m_cfg.get_assets_path("cube_graphe");
  25.  
  26. /**
  27.  * export the method to initialize the app (called at the bottom of this file)
  28.  */
  29. exports.init = function() {
  30.     m_app.init({
  31.         canvas_container_id: "main_canvas_container",
  32.         callback: init_cb,
  33.         show_fps: DEBUG,
  34.         console_verbose: DEBUG,
  35.         autoresize: true
  36.     });
  37. }
  38.  
  39. /**
  40.  * callback executed when the app is initialized
  41.  */
  42. function init_cb(canvas_elem, success) {
  43.  
  44.     if (!success) {
  45.         console.log("b4w init failure");
  46.         return;
  47.     }
  48.  
  49.     m_preloader.create_preloader();
  50.  
  51.     // ignore right-click on the canvas element
  52.     canvas_elem.oncontextmenu = function(e) {
  53.         e.preventDefault();
  54.         e.stopPropagation();
  55.         return false;
  56.     };
  57.  
  58.     m_logic.append_custom_callback("addMeSomeCubes", addMeSomeCubes);
  59.     m_logic.append_custom_callback("movingTime", movingTime);
  60.     m_logic.append_custom_callback("removeMe", removeMe);
  61.     m_logic.append_custom_callback("lookCheck", lookCheck);
  62.  
  63.     load();
  64. }
  65.  
  66. /**
  67.  * load the scene data
  68.  */
  69. function load() {
  70.     m_data.load(APP_ASSETS_PATH + "cube_graphe.json", load_cb, preloader_cb);
  71. }
  72.  
  73. /**
  74.  * update the app's preloader
  75.  */
  76. function preloader_cb(percentage) {
  77.     m_preloader.update_preloader(percentage);
  78. }
  79.  
  80. /**
  81.  * callback executed when the scene data is loaded
  82.  */
  83. function load_cb(data_id, success) {
  84.  
  85.     if (!success) {
  86.         console.log("b4w load failure");
  87.         return;
  88.     }
  89.  
  90.     m_app.enable_camera_controls();
  91.  
  92. }
  93.  
  94.  
  95. function addMeSomeCubes(in_params, out_params)
  96. {
  97.     var nbOfCube = document.getElementById("readMe");
  98.  
  99.     var spaceBetweenCube =  10 / nbOfCube.value;
  100.  
  101.     //Warning
  102.     if (nbOfCube.value > 75)
  103.     {
  104.         alert("le chiffre entrĂ© prendras du temps a etre rendu");
  105.     }
  106.  
  107.  
  108.     for(var i = -nbOfCube.value/2; i < nbOfCube.value/2; i++)
  109.     {
  110.         for(j = -nbOfCube.value/2; j < nbOfCube.value/2; j ++)
  111.         {
  112.             var cube = m_scenes.get_object_by_name("Cube");
  113.             var new_obj = m_obj.copy(cube, "Cube_" + i + "_" + j, true);
  114.  
  115.             m_scenes.append_object(new_obj);
  116.             m_transform.set_translation(new_obj,spaceBetweenCube*i*5,spaceBetweenCube*j*5, Math.sin(Math.sqrt(spaceBetweenCube*i*i+spaceBetweenCube*j*j))*5);
  117.             m_scenes.show_object(new_obj);
  118.             arrayOfCube.push(new_obj);
  119.  
  120.             m_mat.inherit_material(cube, "Based_on_high", new_obj, "Based_on_high");
  121.         }
  122.     }
  123.  
  124.     console.log(arrayOfCube);
  125.     console.log(out_params);
  126.     out_params[0] = spaceBetweenCube;
  127. }
  128.  
  129. function removeMe()
  130. {
  131.     console.log("removing");
  132.  
  133.     for(var i = arrayOfCube.length - 1; i >= 0; i--)
  134.     {
  135.         m_scenes.remove_object(arrayOfCube[i]);
  136.         arrayOfCube.pop();
  137.     }
  138. }
  139.  
  140. function movingTime(in_params, out_params)
  141. {
  142.  
  143.     var spaceBetweenCube = in_params[0];
  144.     var time = in_params[1];
  145.  
  146.     var nbOfCube = document.getElementById("readMe").value;
  147.  
  148.     //console.log(time);
  149.  
  150.     for(var i = -nbOfCube/2; i < nbOfCube/2; i++)
  151.     {
  152.         for(j = -nbOfCube/2; j < nbOfCube/2; j ++)
  153.         {
  154.             var cube = m_scenes.get_object_by_name("Cube_" + i + "_" + j);
  155.             m_transform.set_translation(cube,spaceBetweenCube*i*5,spaceBetweenCube*j*5, Math.sin( Math.sqrt(spaceBetweenCube*i*i+spaceBetweenCube*j*j) - time/10)*5);
  156.         }
  157.     }
  158.  
  159.     //console.log("looping");
  160.  
  161.     out_params[0] = document.getElementById("myCheck").checked;
  162.     out_params[1] = time + 1;
  163. }
  164.  
  165. function lookCheck(in_params, out_params)
  166. {
  167.     var check = in_params[0]
  168.     check = document.getElementById("myCheck").checked;
  169.     out_params[0] =  check;
  170. }
  171.  
  172. });
  173.  
  174. // import the app module and start the app by calling the init method
  175. b4w.require("cube_graphe_main").init();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement