{"id":3025,"date":"2023-05-25T22:24:45","date_gmt":"2023-05-25T13:24:45","guid":{"rendered":"https:\/\/mirror.boy.jp\/?p=3025"},"modified":"2023-05-25T22:24:54","modified_gmt":"2023-05-25T13:24:54","slug":"js-object-%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6-jit-gl-%e3%82%92%e6%a7%8b%e7%af%89%e3%81%99%e3%82%8b%e6%a4%9c%e8%a8%8e-jitter-maxmsp","status":"publish","type":"post","link":"https:\/\/mirror.boy.jp\/?p=3025","title":{"rendered":"js object \u3092\u4f7f\u3063\u3066 jit.gl \u3092\u69cb\u7bc9\u3059\u308b\u691c\u8a0e #jitter #maxmsp"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"849\" src=\"https:\/\/mirror.boy.jp\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-25-at-22.12.21-1024x849.jpg\" alt=\"\" class=\"wp-image-3026\" srcset=\"https:\/\/mirror.boy.jp\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-25-at-22.12.21-1024x849.jpg 1024w, https:\/\/mirror.boy.jp\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-25-at-22.12.21-400x332.jpg 400w, https:\/\/mirror.boy.jp\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-25-at-22.12.21-768x637.jpg 768w, https:\/\/mirror.boy.jp\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-25-at-22.12.21.jpg 1128w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>jit.gl \u306fgl-core\u5c0e\u5165\u306a\u3069\u3082\u3042\u308a\u3001pbr\u30de\u30c6\u30ea\u30a2\u30eb\u3084GPU\u30a4\u30f3\u30b9\u30bf\u30f3\u30b7\u30f3\u30b0\u306a\u3069\u306e\u65b0\u898f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u63a1\u7528\u3082\u3042\u308a\u4ee5\u524d\u3088\u308a\u306f\u4eca\u6642\u306a\u7d75\u4f5c\u308a\u306a\u3069\u3082\u3057\u3084\u3059\u3044\u74b0\u5883\u306b\u306a\u308a\u3064\u3064\u3042\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u3057\u304b\u3057\u3001\u305d\u3082\u305d\u3082\u8ad6\u3068\u3057\u30663D\u5411\u3051\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306a\u3089\u30a2\u30c8\u30ea\u30d3\u30e5\u30fc\u30c8\u30fb\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u8a2d\u5b9a\u3092\u5927\u91cf\u306b\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u5272\u306b\u30c7\u30fc\u30bf\u4fdd\u5b58\u304c\u3081\u3093\u3069\u304f\u3055\u304b\u3063\u305f\u308a\u3001\u76ee\u306b\u898b\u3048\u306a\u3044CONTEXT\u3092\u7528\u3044\u3066\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u7e4b\u3050\uff08\u30d1\u30c3\u30c1\u3092\u307b\u3068\u3093\u3069\u7e4b\u304c\u306a\u3044\uff09\u3068\u3044\u3046Max\u306e\u5e38\u8b58\u304b\u3089\u5927\u5e45\u306f\u304b\u3051\u96e2\u308c\u305f\u30d1\u30c3\u30c1\u30f3\u30b0\u4f53\u9a13\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305d\u308c\u306a\u3089js\u30aa\u30d6\u30b8\u30a7\u30af\u30c8Github Copilot\u3084CodeGPT\u306a\u3069\u3092\u5229\u7528\u3057\u3064\u3064\u3001jit.gl\u90e8\u5206\u306f\u5168\u90e8\u81ea\u52d5\u751f\u6210\u3059\u308c\u3070\u826f\u3044\u3093\u3058\u3083\u306a\u3044\u304b\u3068\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u7d50\u679c\u4e0a\u8a18\u306e\u3088\u3046\u306a\u30d1\u30c3\u30c1\u304c\u751f\u6210\u3055\u308c\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u753b\u50cf\u3092\u3064\u304f\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"990\" height=\"557\" src=\"https:\/\/mirror.boy.jp\/wp-content\/uploads\/2023\/05\/\u540d\u79f0\u672a\u8a2d\u5b9a-1-1.png\" alt=\"\" class=\"wp-image-3028\" srcset=\"https:\/\/mirror.boy.jp\/wp-content\/uploads\/2023\/05\/\u540d\u79f0\u672a\u8a2d\u5b9a-1-1.png 990w, https:\/\/mirror.boy.jp\/wp-content\/uploads\/2023\/05\/\u540d\u79f0\u672a\u8a2d\u5b9a-1-1-400x225.png 400w, https:\/\/mirror.boy.jp\/wp-content\/uploads\/2023\/05\/\u540d\u79f0\u672a\u8a2d\u5b9a-1-1-768x432.png 768w\" sizes=\"(max-width: 990px) 100vw, 990px\" \/><\/figure>\n\n\n\n<p>\u30b3\u30fc\u30c9\u306b\u306f<\/p>\n\n\n\n<ul>\n<li>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u751f\u6210\u30fb\u524a\u9664<\/li>\n\n\n\n<li>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30a2\u30c8\u30ea\u30d3\u30e5\u30fc\u30c8\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u95a2\u6570\u30b3\u30fc\u30eb<\/li>\n\n\n\n<li>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u540c\u58eb\u306e\u63a5\u7d9a<\/li>\n<\/ul>\n\n\n\n<p>\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001Max\u306e\u57fa\u672c\u7684\u306a\u64cd\u4f5c\u306f\u53f6\u3063\u3066\u3044\u308b\u304b\u306a\u3068\u601d\u3044\u307e\u3059\u3002\u3042\u307e\u308a\u6574\u7406\u3057\u3066\u306a\u3044\u306e\u3067\u3054\u53c2\u8003\u7a0b\u5ea6\u3067\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">JS code for js object<\/h1>\n\n\n\n<p>\/\/ Desc: Create a jit.gl.gridshape object and connect it to a jit.gl.handle object<\/p>\n\n\n\n<p>&#8220;use_strict&#8221;<\/p>\n\n\n\n<p>autowatch = 1;<\/p>\n\n\n\n<p>inlets = 1;<\/p>\n\n\n\n<p>outlets = 1;<\/p>\n\n\n\n<p>\/\/ Create a new object<\/p>\n\n\n\n<p>function erase() {<\/p>\n\n\n\n<p>\/\/ Get a reference to this patcher<\/p>\n\n\n\n<p>if(this==null) return;<\/p>\n\n\n\n<p>var p = this.patcher;<\/p>\n\n\n\n<p>if(p==null) return;<\/p>\n\n\n\n<p>\/\/ Get the first object in the patcher<\/p>\n\n\n\n<p>var obj = p.firstobject;<\/p>\n\n\n\n<p>if(obj == null) return;<\/p>\n\n\n\n<p>\/\/ Loop through all objects<\/p>\n\n\n\n<p>while (obj) {<\/p>\n\n\n\n<p>\/\/ Get a reference to the next object before we delete this one<\/p>\n\n\n\n<p>var next_obj = obj.nextobject;<\/p>\n\n\n\n<p>\/\/ Check if this object is the js object<\/p>\n\n\n\n<p>if (obj.maxclass !== &#8220;js&#8221;) {<\/p>\n\n\n\n<p>\/\/ Remove this object<\/p>\n\n\n\n<p>p.remove(obj);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>\/\/ Move to the next object<\/p>\n\n\n\n<p>obj = next_obj;<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>init();<\/p>\n\n\n\n<p>var create_msg = this.patcher.newdefault(getNewPosition(), &#8220;message&#8221;);<\/p>\n\n\n\n<p>create_msg.set(&#8220;create&#8221;);<\/p>\n\n\n\n<p>this.patcher.connect(create_msg, 0, this.box, 0);<\/p>\n\n\n\n<p>var erase_msg = this.patcher.newdefault(getNewPosition(), &#8220;message&#8221;);<\/p>\n\n\n\n<p>erase_msg.set(&#8220;erase&#8221;);<\/p>\n\n\n\n<p>this.patcher.connect(erase_msg, 0, this.box, 0);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>var index = 0;<\/p>\n\n\n\n<p>function init(){<\/p>\n\n\n\n<p>index = 0;<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>function getNewPosition(){<\/p>\n\n\n\n<p>const numReturn = 30;<\/p>\n\n\n\n<p>const xs = 150;<\/p>\n\n\n\n<p>const ys = 30;<\/p>\n\n\n\n<p>var x = Math.floor(index \/ numReturn) * xs;<\/p>\n\n\n\n<p>var y = (index % numReturn) * ys;<\/p>\n\n\n\n<p>index++;<\/p>\n\n\n\n<p>return [x,y];<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>function create() {<\/p>\n\n\n\n<p>var mytoggle = this.patcher.newdefault(getNewPosition(), &#8220;toggle&#8221;);<\/p>\n\n\n\n<p>var myprint = this.patcher.newdefault(getNewPosition(), &#8220;print&#8221;);<\/p>\n\n\n\n<p>var myworld = this.patcher.newdefault(getNewPosition(), &#8220;jit.world&#8221;, &#8220;TEST&#8221;);<\/p>\n\n\n\n<p>myworld.setattr(&#8220;enable&#8221;, 1);<\/p>\n\n\n\n<p>var myfps = this.patcher.newdefault(getNewPosition(),&#8221;jit.fpsgui&#8221;);<\/p>\n\n\n\n<p>this.patcher.connect(myworld, 1, myfps, 0);<\/p>\n\n\n\n<p>var myhandle = this.patcher.newdefault(getNewPosition(), &#8220;jit.gl.handle&#8221;, &#8220;TEST&#8221;);<\/p>\n\n\n\n<p>myhandle.setattr(&#8220;auto_rotate&#8221;,1); \/\/ Same as the existing object<\/p>\n\n\n\n<p>var mycamera = this.patcher.newdefault(getNewPosition(), &#8220;jit.gl.camera&#8221;, &#8220;TEST&#8221;);<\/p>\n\n\n\n<p>var myNoise = this.patcher.newdefault(getNewPosition(),&#8221;jit.noise&#8221;,4,&#8221;float32&#8243;,512,512);<\/p>\n\n\n\n<p>var myPwindow = this.patcher.newdefault(getNewPosition(),&#8221;jit.pwindow&#8221;, &#8220;TEST&#8221;);<\/p>\n\n\n\n<p>this.patcher.connect(myNoise, 0, myPwindow, 0);<\/p>\n\n\n\n<p>var myMaterial = this.patcher.newdefault(getNewPosition(),&#8221;jit.gl.material&#8221;, &#8220;TEST&#8221;);<\/p>\n\n\n\n<p>myMaterial.setattr(&#8220;name&#8221;,&#8221;myMaterial&#8221;); \/\/ Same as the existing object<\/p>\n\n\n\n<p>this.patcher.connect(myNoise, 0, myMaterial, 0);<\/p>\n\n\n\n<p>myNoise.bang();<\/p>\n\n\n\n<p>var myNode = this.patcher.newdefault(getNewPosition(),&#8221;jit.gl.node&#8221;, &#8220;TEST&#8221;);<\/p>\n\n\n\n<p>myNode.setattr(&#8220;name&#8221;,&#8221;subnode&#8221;); \/\/ Same as the existing object<\/p>\n\n\n\n<p>this.patcher.connect(myhandle, 0, myNode, 0);<\/p>\n\n\n\n<p>for(var i =0 ; i&lt; 1000 ; i++){<\/p>\n\n\n\n<p>var myGridshape = this.patcher.newdefault(getNewPosition(),&#8221;jit.gl.plato&#8221;, &#8220;subnode&#8221;);<\/p>\n\n\n\n<p>\/\/myGridshape.setattr(&#8220;name&#8221;,&#8221;myGridshape&#8221;); \/\/ Same as the existing object<\/p>\n\n\n\n<p>myGridshape.setattr(&#8220;color&#8221;,[Math.random(), Math.random(), Math.random()]);<\/p>\n\n\n\n<p>myGridshape.setattr(&#8220;smooth_shading&#8221;,1);<\/p>\n\n\n\n<p>myGridshape.setattr(&#8220;position&#8221;,[Math.random()-0.5, Math.random()-0.5, Math.random()-0.5]);<\/p>\n\n\n\n<p>myGridshape.setattr(&#8220;rotatexyz&#8221;,[Math.random() * 360, Math.random()* 360, Math.random()* 360]);<\/p>\n\n\n\n<p>myGridshape.setattr(&#8220;scale&#8221;,Math.random()*0.01);<\/p>\n\n\n\n<p>myGridshape.setattr(&#8220;material&#8221;, &#8220;myMaterial&#8221;);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>mytoggle.bang();<\/p>\n\n\n\n<p>this.patcher.connect(mytoggle, 0, myprint, 0);<\/p>\n\n\n\n<p>\/\/this.patcher.disconnect(obj1, 0, obj2, 0);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>post(&#8220;initialized&#8221;);<\/p>\n","protected":false},"excerpt":{"rendered":"<p>jit.gl \u306fgl-core\u5c0e\u5165\u306a\u3069\u3082\u3042\u308a\u3001pbr\u30de\u30c6\u30ea\u30a2\u30eb\u3084GPU\u30a4\u30f3\u30b9\u30bf\u30f3\u30b7\u30f3\u30b0\u306a\u3069\u306e\u65b0\u898f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u63a1\u7528\u3082\u3042\u308a\u4ee5\u524d\u3088\u308a\u306f\u4eca\u6642\u306a\u7d75\u4f5c\u308a\u306a\u3069\u3082\u3057\u3084\u3059\u3044\u74b0\u5883\u306b\u306a\u308a\u3064\u3064\u3042\u308b\u3088\u3046\u3067\u3059\u3002 \u3057\u304b\u3057\u3001\u305d\u3082\u305d\u3082\u8ad6\u3068\u3057\u30663D\u5411\u3051\u306e &hellip; <a href=\"https:\/\/mirror.boy.jp\/?p=3025\" class=\"more-link\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"screen-reader-text\">js object \u3092\u4f7f\u3063\u3066 jit.gl \u3092\u69cb\u7bc9\u3059\u308b\u691c\u8a0e #jitter #maxmsp<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":3027,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,45,58,26],"tags":[],"_links":{"self":[{"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=\/wp\/v2\/posts\/3025"}],"collection":[{"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3025"}],"version-history":[{"count":1,"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=\/wp\/v2\/posts\/3025\/revisions"}],"predecessor-version":[{"id":3029,"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=\/wp\/v2\/posts\/3025\/revisions\/3029"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=\/wp\/v2\/media\/3027"}],"wp:attachment":[{"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}