{"id":11234,"date":"2020-12-26T00:00:00","date_gmt":"2020-12-26T00:00:00","guid":{"rendered":"https:\/\/binus.ac.id\/binus-digital\/2020\/12\/26\/menggunakan-library-pannellum-untuk-menampilkan-image-360\/"},"modified":"2024-09-24T02:20:16","modified_gmt":"2024-09-24T02:20:16","slug":"menggunakan-library-pannellum-untuk-menampilkan-image-360","status":"publish","type":"post","link":"https:\/\/binus.ac.id\/binus-digital\/2020\/12\/26\/menggunakan-library-pannellum-untuk-menampilkan-image-360\/","title":{"rendered":"Menggunakan Library Pannellum untuk Menampilkan Image 360"},"content":{"rendered":"<p>Dari sekian banyak library 360 Viewer, saya memilih library\u00a0<a href=\"https:\/\/pannellum.org\/\">Pannellum<\/a>\u00a0sebagai library 360 Viewer untuk projek saya (sebenarnya, saat itu kebetulan pannellum berada di nomor atas hasil pencarian Google sehingga langsung saya klik dan cocok).<\/p>\n<p><a href=\"https:\/\/pannellum.org\/\">Pannellum<\/a>\u00a0sudah saya gunakan sebelumnya pada pembuatan website Hotel Management BINUS untuk menampilkan fasilitas-fasilitas yang dimiliki oleh jurusan Hotel Management BINUS. Bisa dilihat pada link berikut.<\/p>\n<p><a href=\"https:\/\/hotel-management.binus.ac.id\/\">https:\/\/hotel-management.binus.ac.id\/<\/a><\/p>\n<p>Pada projek kedua, kali ini untuk BINUS TV, saya kembali memilih Pannellum karena memang pluginnya sangat mudah digunakan dan\u00a0<em>customizeable<\/em>. Saat ini belum bisa saya tampilkan hasilnya karena masih berada di server Beta, nanti akan saya update.<\/p>\n<p>Berikut beberapa fitur Pannellum:<\/p>\n<ol>\n<li>Memiliki fungsi navigasi untuk berpindah lokasi atau gambar (Tour)<\/li>\n<li>Support Video 360<\/li>\n<li>Support custom navigation\/control<\/li>\n<li>Support custom hotspot<\/li>\n<\/ol>\n<p>Website Pannellum:\u00a0<a href=\"https:\/\/pannellum.org\/\">https:\/\/pannellum.org\/<\/a><\/p>\n<p>Selanjutnya akan saya bahas cara menggunakan library Pannellum.<\/p>\n<p><strong>01. Basic Image 360<\/strong><br \/>\nKita akan membuat terlebih dahulu contoh sederhana untuk menampilkan Image 360. Langkah pertama, silahkan buat folder projek baru lalu buat file baru dengan name \u201cindex.html\u201d di dalam folder tersebut. Dan ketik kode berikut.<\/p>\n<pre class=\"wp-block-preformatted\">&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"en\"&gt;\r\n   &lt;head&gt;\r\n      &lt;meta charset=\"UTF-8\"&gt;\r\n      &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\r\n      &lt;title&gt;Pannellum 360 Viewer&lt;\/title&gt;\r\n\r\n      &lt;!-- Load script Pannellum dari CDN --&gt;\r\n      &lt;link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/pannellum@2.5.6\/build\/pannellum.css\"&gt;\r\n      &lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/pannellum@2.5.6\/build\/pannellum.js\"&gt;&lt;\/script&gt;\r\n\r\n      &lt;!-- Menentukan tinggi image 360 --&gt;\r\n      &lt;style&gt;\r\n         body {\r\n            margin: 0;\r\n            padding: 0;\r\n         }\r\n         #pannellum-image-360 {\r\n            height: 480px;\r\n         }\r\n      &lt;\/style&gt;\r\n   &lt;\/head&gt;\r\n\r\n   &lt;body&gt;\r\n       &lt;div id=\"pannellum-image-360\"&gt;&lt;\/div&gt;\r\n       &lt;script&gt;\r\n          \/\/ parameter pertama adalah id (target) element\r\n          \/\/ parameter kedua adalah option nya\r\n          pannellum.viewer('pannellum-image-360', {\r\n             type: 'equirectangular',\r\n             panorama: 'https:\/\/pannellum.org\/images\/alma.jpg'\r\n          });\r\n       &lt;\/script&gt; \r\n   &lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p>Jika sudah, buka file \u201cindex.html\u201d di browser, Image 360 sudah dapat dilihat.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-8246\" src=\"http:\/\/binus.ac.id\/knowledge\/wp-content\/uploads\/2020\/12\/Screen-Shot-2020-12-22-at-6.46.18-PM-699x342.png\" alt=\"\" width=\"699\" height=\"342\" \/><\/p>\n<p><strong>02. Tour 360<\/strong><br \/>\nUntuk membuat Image Tour 360, kita perlu menyiapkan gambar lebih dari satu gambar. Untuk demo, saya akan menggunakan image berikut.<br \/>\na.\u00a0<a href=\"https:\/\/cdn.pannellum.org\/2.5\/pannellum.htm#panorama=https:\/\/pannellum.org\/images\/alma.jpg\">https:\/\/pannellum.org\/images\/alma.jpg<\/a><br \/>\nb.\u00a0<a href=\"https:\/\/pannellum.org\/images\/jfk.jpg\">https:\/\/pannellum.org\/images\/jfk.jpg<\/a><\/p>\n<p>Dalam pembuatan Tour 360, kita perlu membagi kedua gambar tersebut ke dalam 2 scene. Yang harus dilakukan adalah kita harus menambahkan option \u201cscenes\u201d pada script kita seperti berikut.<\/p>\n<pre id=\"block-48f0e308-b646-4bea-9251-43bad338d1f2\" class=\"wp-block-preformatted\">&lt;script&gt;\r\n\/\/ parameter pertama adalah id (target) element\r\n\/\/ parameter kedua adalah option nya\r\npannellum.viewer('pannellum-image-360', {\r\n\u00a0 scenes: {\r\n\u00a0 \u00a0 alma: {},\r\n\u00a0 \u00a0 jfk: {}\r\n\u00a0 }\r\n}\r\n&lt;\/script&gt;<\/pre>\n<p>Nama scene saya samakan dengan nama file nya. Selanjutnya, kita tambahkan option untuk masing-masing scene seperti berikut.<\/p>\n<pre class=\"wp-block-preformatted\">alma: {\r\n\u00a0 title: 'Alma',\r\n\u00a0 pitch: 0,\r\n\u00a0 yaw: 0,\r\n\u00a0 hfov: 100,\r\n\u00a0 type: '<code>equirectangular<\/code>', \u00a0 panorama: 'https:\/\/pannellum.org\/images\/alma.jpg' }, jfk: { \u00a0 title: 'JFK', \u00a0 pitch: 0, \u00a0 yaw: 0, \u00a0 hfov: 100, \u00a0 type: '<code>equirectangular<\/code>', \u00a0 panorama: 'https:\/\/pannellum.org\/images\/jfk.jpg' }<\/pre>\n<p>Selanjutnya, kita tentukan dulu, scene mana yang akan pertama kali ditampilkan. Update kode nya jadi seperti berikut.<\/p>\n<pre class=\"wp-block-preformatted\">pannellum.viewer('pannellum-image-360', {\r\n\u00a0 default: {\r\n\u00a0 \u00a0 \/\/ scene yang akan ditampilkan pertama kali\r\n\u00a0 \u00a0 firstScene: 'alma',\r\n\u00a0 \u00a0 sceneFadeDuration: 1000\r\n\u00a0 },\r\n\u00a0 scenes: {\r\n\u00a0 \u00a0 alma: {\r\n\u00a0 \u00a0 \u00a0 \/\/ diisi dengan kode sebelumnya\r\n\u00a0 \u00a0 },\r\n\u00a0 \u00a0 jfk: {\r\n\u00a0 \u00a0 \u00a0 \/\/ diisi dengan kode sebelumnya\r\n\u00a0 \u00a0 }\r\n\u00a0 }\r\n});<\/pre>\n<p>Dengan kode diatas, masih belum cukup untuk bisa melakukan Tour karena kita belum menentukan masing-masing titik pindahan \/ Hotspot. Untuk menentukan hotspot, kita perlu menambahkan option \u201chotSpots\u201d pada masing-masing scene seperti berikut.<\/p>\n<pre class=\"wp-block-preformatted\">alma: {\r\n\u00a0 ... \/\/ option sebelumnya, ditambahkan option berikut\r\n\u00a0 hotSpots: [\r\n\u00a0 \u00a0 {\r\n\u00a0 \u00a0 \u00a0 pitch: 0,\r\n\u00a0 \u00a0 \u00a0 yaw: 0,\r\n\u00a0 \u00a0 \u00a0 type: 'scene',\r\n\u00a0 \u00a0 \u00a0 text: 'JFK',\r\n\u00a0 \u00a0 \u00a0 sceneId: 'jfk'\r\n\u00a0 \u00a0 }\r\n\u00a0 ]\r\n},\r\njfk: {\r\n\u00a0 ... \/\/ option sebelumnya, ditambahkan option berikut\r\n\u00a0 hotSpots: [\r\n\u00a0 \u00a0 {\r\n\u00a0 \u00a0 \u00a0 pitch: 0,\r\n\u00a0 \u00a0 \u00a0 yaw: 0,\r\n\u00a0 \u00a0 \u00a0 type: 'scene',\r\n\u00a0 \u00a0 \u00a0 text: 'Alma',\r\n\u00a0 \u00a0 \u00a0 sceneId: 'alma'\r\n\u00a0 \u00a0 }\r\n\u00a0 ]\r\n}<\/pre>\n<p>Jika sudah hasilnya akan seperti berikut:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-8247\" src=\"http:\/\/binus.ac.id\/knowledge\/wp-content\/uploads\/2020\/12\/Screen-Shot-2020-12-22-at-8.35.35-PM-1024x390-1-768x293.png\" alt=\"\" width=\"768\" height=\"293\" \/><\/p>\n<p>Bisa dilihat, terdapat icon panah yang kalau diklik akan pindah ke scene \u201cJFK\u201d dan di scene \u201cJFK\u201d juga akan terdapat icon panah yang kalau diklik akan pindah ke scene \u201cAlma\u201d.<\/p>\n<p>Keseluruhan kode bisa dilihat di link berikut.<br \/>\n<a href=\"https:\/\/github.com\/fachririyanto\/pannellum-example\/tour.html\">https:\/\/github.com\/fachririyanto\/pannellum-example\/tour.html<\/a><\/p>\n<p><strong>03. Custom Hotspot<\/strong><br \/>\nSingkat saja, untuk custom Hotspot, pada masing-masing option \u201chotSpots\u201d, silahkan tambahkan option \u201ccreateTooltipFunc\u201d untuk callback me-render custom HTML dan tambahkan option \u201ccreateTooltipArgs\u201d untuk mengirimkan parameter ke fungsi callback \u201ccreateTooltipFunc\u201d.<\/p>\n<pre class=\"wp-block-preformatted\">alma: {\r\n\u00a0 hotSpots: [\r\n\u00a0 \u00a0 {\r\n\u00a0 \u00a0 \u00a0 ...,\r\n\u00a0 \u00a0 \u00a0 \/\/ isi args, silahkan diisi sesuai kebutuhan rendering custom hotspot nya\r\n\u00a0 \u00a0 \u00a0 createTooltipArgs: {\r\n\u00a0 \u00a0 \u00a0 \u00a0 title: 'Nama Hotspot',\r\n\u00a0 \u00a0 \u00a0 \u00a0 link: ''\r\n\u00a0 \u00a0 \u00a0 },\r\n\r\n\u00a0 \u00a0 \u00a0 \/\/ render custom element\r\n\u00a0 \u00a0 \u00a0 createTooltipFunc: function(element, args) {\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\r\n \u00a0 \u00a0 \u00a0 \u00a0 console.log(args);\r\n\u00a0 \u00a0 \u00a0 \u00a0 element.innerHTML = '&lt;a href=\"' + args.link + '\"&gt;' + args.title + '&lt;\/a&gt;';\r\n\u00a0 \u00a0 \u00a0}\r\n\u00a0 ]\r\n}<\/pre>\n<p>Untuk lebih jelasnya silahkan kunjungi link berikut.<br \/>\n<a href=\"https:\/\/pannellum.org\/documentation\/examples\/custom-hot-spots\/\">https:\/\/pannellum.org\/documentation\/examples\/custom-hot-spots\/<\/a><\/p>\n<p>Kode demo bisa dilihat pada link berikut.<br \/>\n<a href=\"https:\/\/github.com\/fachririyanto\/pannellum-example\">https:\/\/github.com\/fachririyanto\/pannellum-example<\/a><\/p>\n<p>Sampai sini dulu artikel kali ini, selamat bereksplorasi. Semoga bermanfaat.<\/p>\n<p>Contoh kode: <a href=\"https:\/\/github.com\/fachririyanto\/training\/tree\/master\/pannellum-example\">https:\/\/github.com\/fachririyanto\/training\/tree\/master\/pannellum-example<\/a><br \/>\nPhoto by <a href=\"https:\/\/unsplash.com\/@oldfieldart?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Timothy Oldfield<\/a> on <a href=\"https:\/\/unsplash.com\/s\/photos\/360?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Unsplash<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dari sekian banyak library 360 Viewer, saya memilih library\u00a0Pannellum\u00a0sebagai library 360 Viewer untuk projek saya (sebenarnya, saat itu kebetulan pannellum berada di nomor atas hasil pencarian Google sehingga langsung saya klik dan cocok). Pannellum\u00a0sudah saya gunakan sebelumnya pada pembuatan website Hotel Management BINUS untuk menampilkan fasilitas-fasilitas yang dimiliki oleh jurusan Hotel Management BINUS. Bisa dilihat [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":11235,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77],"tags":[],"class_list":["post-11234","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles"],"_links":{"self":[{"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/posts\/11234","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/comments?post=11234"}],"version-history":[{"count":1,"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/posts\/11234\/revisions"}],"predecessor-version":[{"id":11807,"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/posts\/11234\/revisions\/11807"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/media\/11235"}],"wp:attachment":[{"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/media?parent=11234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/categories?post=11234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/tags?post=11234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}