{"id":705,"date":"2012-06-26T00:47:51","date_gmt":"2012-06-25T15:47:51","guid":{"rendered":"http:\/\/nyatla.jp\/nyartoolkit\/wp\/?p=705"},"modified":"2012-06-26T01:12:18","modified_gmt":"2012-06-25T16:12:18","slug":"mqo-file-viewer","status":"publish","type":"post","link":"http:\/\/nyatla.jp\/nyartoolkit\/wp\/?p=705","title":{"rendered":"MQO file viewer"},"content":{"rendered":"<p>Forum\u306bMQO\u306e\u8868\u793a\u65b9\u6cd5\u306e\u8cea\u554f\u304c\u3042\u3063\u305f\u306e\u3067\u3001\u30b9\u30b1\u30c3\u30c1\u66f8\u304d\u307e\u3057\u305f\u3002MQO\u30d5\u30a1\u30a4\u30eb\u3092Hiro\u30de\u30fc\u30ab\u306e\u4e0a\u306b\u8868\u793a\u3057\u307e\u3059\u3002<\/p>\n<p><a href=\"http:\/\/nyatla.jp\/nyartoolkit\/wp\/wp-content\/uploads\/0d40a5e4a645fc6b96e767d64ac0878e16.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-711\" title=\"\u7121\u984c\" src=\"http:\/\/nyatla.jp\/nyartoolkit\/wp\/wp-content\/uploads\/0d40a5e4a645fc6b96e767d64ac0878e16-300x236.png\" alt=\"\" width=\"300\" height=\"236\" \/><\/a><\/p>\n<h2>Source code<\/h2>\n<p>MqoView.java<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\nimport javax.media.opengl.*;\r\n\r\nimport jp.nyatla.kGLModel.KGLException;\r\nimport jp.nyatla.kGLModel.KGLExtensionCheck;\r\nimport jp.nyatla.kGLModel.KGLModelData;\r\nimport jp.nyatla.kGLModel.contentprovider.LocalContentProvider;\r\nimport jp.nyatla.nyartoolkit.core.NyARException;\r\nimport jp.nyatla.nyartoolkit.jmf.utils.*;\r\nimport jp.nyatla.nyartoolkit.jogl.sketch.GlSketch;\r\nimport jp.nyatla.nyartoolkit.jogl.utils.*;\r\nimport jp.nyatla.nyartoolkit.markersystem.NyARMarkerSystemConfig;\r\n\/**\r\n * This program shows a Mqo model.\r\n *\/\r\npublic class MqoView extends GlSketch\r\n{\r\n  private NyARJmfCamera camera;\r\n  private NyARGlMarkerSystem nyar;\r\n  private NyARGlRender render;\r\n  private KGLModelData model_data; \/\/ kei add\r\n  public void setup(GL gl)throws NyARException\r\n  {\r\n    this.size(640,480);\r\n    NyARMarkerSystemConfig config = new NyARMarkerSystemConfig(640,480);\r\n    JmfCaptureDeviceList devlist = new JmfCaptureDeviceList();\r\n    JmfCaptureDevice d = devlist.getDevice(0);\r\n    d.setCaptureFormat(config.getScreenSize(),30.0f);\r\n    this.camera=new NyARJmfCamera(d);\/\/create sensor system\r\n    this.nyar=new NyARGlMarkerSystem(config);   \/\/create MarkerSystem\r\n    this.render=new NyARGlRender(this.nyar);\r\n\r\n    this.id=this.nyar.addARMarker(&quot;data\/patt.hiro&quot;,16,25,80);\r\n    try {\r\n      LocalContentProvider content_provider=new LocalContentProvider(&quot;data\/miku_xx08\/miku.mqo&quot;);\r\n      model_data = KGLModelData.createGLModel(gl,null,content_provider,0.015f, KGLExtensionCheck.IsExtensionSupported(gl,&quot;GL_ARB_vertex_buffer_object&quot;));\r\n    } catch (KGLException e) {\r\n      e.printStackTrace();\r\n      throw new NyARException(e);\r\n    }\r\n    gl.glEnable(GL.GL_DEPTH_TEST);\r\n    this.camera.start();\r\n  }\r\n  private int id;\r\n\r\n  public void draw(GL gl)\r\n  {\r\n    synchronized(this.camera){\r\n      try {\r\n        this.render.drawBackground(gl, this.camera.getSourceImage());\r\n        this.render.loadARProjectionMatrix(gl);\r\n        this.nyar.update(this.camera);\r\n        if(this.nyar.isExistMarker(this.id)){\r\n          \/\/ Viewing transformation.\r\n          gl.glLoadIdentity();\r\n          this.render.loadMarkerMatrix(gl,this.id);\r\n          gl.glTranslatef(0.0f,0.0f,0.0f) ;\/\/position\r\n          gl.glRotatef(90.0f,1.0f, 0.0f, 0.0f); \/\/OpenGL\u5ea7\u6a19\u7cfb\u2192ARToolkit\u5ea7\u6a19\u7cfb\r\n          gl.glEnable(GL.GL_CULL_FACE);\r\n          gl.glCullFace(GL.GL_FRONT);\r\n          model_data.enables(10.0f);\r\n          model_data.draw() ;\r\n          model_data.disables() ;\r\n        }\r\n        Thread.sleep(1);\r\n      } catch (Exception e) {\r\n        e.printStackTrace();\r\n      }\r\n    }\r\n  }\r\n  public static void main(String&#x5B;] args)\r\n  {\r\n    try {\r\n      new MqoView();\r\n    } catch (Exception e) {\r\n      e.printStackTrace();\r\n    }\r\n    return;\r\n  }\r\n}\r\n\r\n<\/pre>\n<h2>\u89e3\u8aac<\/h2>\n<p>MQO\u306e\u8868\u793a\u306b\u306f\u3001kei\u3055\u3093\u4f5c\u306eKGL\u3092\u82e5\u5e72\u6539\u5909\u3057\u305f\u3082\u306e\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002<br \/>\n\u30b9\u30b1\u30c3\u30c1\u306e\u91cd\u8981\u306a\u90e8\u5206\u306f\uff12\u7b87\u6240\u3067\u3059\u3002<\/p>\n<p>setup\u3067\u306f\u3001MQO\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n  LocalContentProvider content_provider=new LocalContentProvider(&quot;data\/miku_xx08\/miku.mqo&quot;);\r\n  model_data = KGLModelData.createGLModel(gl,null,content_provider,0.015f, KGLExtensionCheck.IsExtensionSupported(gl,&quot;GL_ARB_vertex_buffer_object&quot;));\r\n\r\n<\/pre>\n<p>draw\u3067\u306f\u3001\u8aad\u307f\u8fbc\u3093\u3060\u30e2\u30c7\u30eb\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n        if(this.nyar.isExistMarker(this.id)){\r\n          \/\/ Viewing transformation.\r\n          gl.glLoadIdentity();\r\n          this.render.loadMarkerMatrix(gl,this.id);\r\n          gl.glTranslatef(0.0f,0.0f,0.0f) ;\/\/position\r\n          gl.glRotatef(90.0f,1.0f, 0.0f, 0.0f); \/\/OpenGL\u5ea7\u6a19\u7cfb\u2192ARToolkit\u5ea7\u6a19\u7cfb\r\n          gl.glEnable(GL.GL_CULL_FACE);\r\n          gl.glCullFace(GL.GL_FRONT);\r\n          model_data.enables(10.0f);\r\n          model_data.draw() ;\r\n          model_data.disables() ;\r\n        }\r\n<\/pre>\n<h2>Setup<\/h2>\n<p>project\u30d5\u30a1\u30a4\u30eb\u306f\u3000<a href=\"http:\/\/nyatla.jp\/nyartoolkit\/wp\/wp-content\/uploads\/MqoModel-20120326.zip\">MqoModel-20120326.zip<\/a>\u3000\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002\u5b9f\u52b9\u306b\u306f\u3001JMF\u3001JOGL\u3001NyARToolkit version 4.x\u304c\u5fc5\u8981\u3067\u3059\u3002\u3042\u3089\u304b\u3058\u3081\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u3066\u7f6e\u3044\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>Hiro\u30de\u30fc\u30ab\u3092\u64ae\u5f71\u3059\u308b\u3068\u3001\u30d7\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u3066\u3044\u308b\u30df\u30af\u3055\u3093\u306e\u30e2\u30c7\u30eb\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n<h2>3D model\u306b\u3064\u3044\u3066<\/h2>\n<p>\u30d7\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u3066\u3044\u308b3Dmodel\u306f\u3001\u4e09\u6b21\u5143\uff23\uff27\uff20\u4e03\u8449\u3000nh0072.zip\u3092\u7de8\u96c6\u3057\u3066\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h1>English<\/h1>\n<p>This sketch shows MQO-model above\u00a0 &#8220;Hiro&#8221; marker.<\/p>\n<h2>Source code<\/h2>\n<p>Main program is MqoView.java<\/p>\n<h2>Description of source code<\/h2>\n<p>MQO library is KGL by kei-san.<br \/>\nThe changed parts are below.<\/p>\n<ul>\n<li>setup &#8211;\u00a0 MQO loader codes.<\/li>\n<li>draw &#8211; MQO drawing codes.<\/li>\n<\/ul>\n<h2>Setup<\/h2>\n<p>The eclipse project is\u3000<a href=\"http:\/\/nyatla.jp\/nyartoolkit\/wp\/wp-content\/uploads\/MqoModel-20120326.zip\">MqoModel-20120326.zip<\/a> . The project requires external libraries, JMF ,JOGL, NyARToolkit version 4.x.\u00a0 Please set up these libraries.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Forum\u306bMQO\u306e\u8868\u793a\u65b9\u6cd5\u306e\u8cea\u554f\u304c\u3042\u3063\u305f\u306e\u3067\u3001\u30b9\u30b1\u30c3\u30c1\u66f8\u304d\u307e\u3057\u305f\u3002MQO\u30d5\u30a1\u30a4\u30eb\u3092Hiro\u30de\u30fc\u30ab\u306e\u4e0a\u306b\u8868\u793a\u3057\u307e\u3059\u3002 Source code MqoView.java import javax.media.opengl. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,13],"tags":[],"_links":{"self":[{"href":"http:\/\/nyatla.jp\/nyartoolkit\/wp\/index.php?rest_route=\/wp\/v2\/posts\/705"}],"collection":[{"href":"http:\/\/nyatla.jp\/nyartoolkit\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/nyatla.jp\/nyartoolkit\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/nyatla.jp\/nyartoolkit\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/nyatla.jp\/nyartoolkit\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=705"}],"version-history":[{"count":4,"href":"http:\/\/nyatla.jp\/nyartoolkit\/wp\/index.php?rest_route=\/wp\/v2\/posts\/705\/revisions"}],"predecessor-version":[{"id":712,"href":"http:\/\/nyatla.jp\/nyartoolkit\/wp\/index.php?rest_route=\/wp\/v2\/posts\/705\/revisions\/712"}],"wp:attachment":[{"href":"http:\/\/nyatla.jp\/nyartoolkit\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=705"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/nyatla.jp\/nyartoolkit\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=705"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/nyatla.jp\/nyartoolkit\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=705"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}