{"id":118,"date":"2023-12-02T12:22:29","date_gmt":"2023-12-02T11:22:29","guid":{"rendered":"https:\/\/3dkodiranje.com\/?p=118"},"modified":"2023-12-06T10:17:30","modified_gmt":"2023-12-06T09:17:30","slug":"kako-kreirati-3d-portal-za-prijelaz-s-3d-scene-na-drugu-web-stanicu","status":"publish","type":"post","link":"https:\/\/3dkodiranje.com\/index.php\/2023\/12\/02\/kako-kreirati-3d-portal-za-prijelaz-s-3d-scene-na-drugu-web-stanicu\/","title":{"rendered":"Kako kreirati 3D portal za prijelaz s 3D scene na drugu web stanicu"},"content":{"rendered":"\n<p>Ukoliko \u017eelite u svoju 3D scenu dodati druge web stranice to mo\u017eete napraviti pomo\u0107u komponente <code>aframe-web-portals<\/code><\/p>\n\n\n\n<p>Ako \u017eelite koristiti <code>aframe-web-portals<\/code>, slijedite ove korake kako biste integrirali komponentu u svoj A-Frame projekt:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Postavite svoj A-Frame projekt:<\/h3>\n\n\n\n<p>Prvo, postavite svoj A-Frame projekt ako ve\u0107 niste. To mo\u017eete u\u010diniti stvaranjem HTML datoteke i uklju\u010divanjem A-Frame skripti. Primjer osnovne strukture HTML datoteke:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n\n&lt;head&gt;\n  &lt;meta charset=\"UTF-8\"&gt;\n  &lt;title&gt;A-Frame Portal Tutorial&lt;\/title&gt;\n  &lt;script src=\"https:\/\/aframe.io\/releases\/1.2.0\/aframe.min.js\"&gt;&lt;\/script&gt;\n  &lt;!-- Dodajte ostale skripte i biblioteke koje \u017eelite koristiti --&gt;\n&lt;\/head&gt;\n\n&lt;body&gt;\n  &lt;a-scene&gt;\n    &lt;!-- Va\u0161a 3D scena ide ovdje --&gt;\n  &lt;\/a-scene&gt;\n&lt;\/body&gt;\n\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Dodajte <code>aframe-web-portals<\/code> u svoj projekt:<\/h3>\n\n\n\n<p>Uklju\u010dite skriptu <code>aframe-web-portals<\/code> u svojoj HTML datoteci. Ako koristite bundler poput Webpack-a, provjerite je li <code>aframe-web-portals<\/code> dodan kao zavisnost u va\u0161em <code>package.json<\/code> i uvezan u va\u0161em kodu.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!-- Unutar head sekcije HTML datoteke --&gt;\n    &lt;script src=\"https:\/\/unpkg.com\/aframe-web-portals@1.0.1\/dist\/aframe-web-portals.umd.js\"&gt;&lt;\/script&gt;\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. Dodajte web portal u svoju A-Frame scenu:<\/h3>\n\n\n\n<p>Sada mo\u017eete dodati web portal u svoju A-Frame scenu. Primjer:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      &lt;a-entity\n        position=\"-3 0 -6\"\n        web-portal=\"url:https:\/\/hr.wikipedia.org\/wiki\/Stari_most_u_Mostaru; text:Stari Most;\"\n      &gt;&lt;\/a-entity&gt;<\/code><\/pre>\n\n\n\n<p>Ovaj primjer dodaje web portal koji vodi na stranicu Wikipedije koja govori o Starom mostu u Mostaru,<code><a href=\"https:\/\/hr.wikipedia.org\/wiki\/Stari_most_u_Mostaru\">  https:\/\/hr.wikipedia.org\/wiki\/Stari_most_u_Mostaru<\/a><\/code>. Tekst &#8220;Stari most&#8221; \u0107e se prikazati na portalu. Prilagodite URL i tekst prema svojim potrebama.<\/p>\n\n\n\n<p>Bitno je imati kameru i entitet igra\u010da (playera) u A-Frame sceni kada koristite portal komponentu iz nekoliko razloga:<\/p>\n\n\n\n<ol>\n<li><strong>Kamera za Pogled Korisnika:<\/strong>\n<ul>\n<li>Kamera je osnovni entitet koji odre\u0111uje trenutni pogled korisnika u virtualnom prostoru. Portal komponenta koristi trenutnu kameru kako bi preusmjerila korisnika na drugu scenu ili web stranicu.<\/li>\n\n\n\n<li>Kada korisnik prolazi kroz portal, \u017eelite da nova scena ili web stranica bude prikazana iz njegove perspektive. Kamera omogu\u0107uje pratnju pogleda korisnika tijekom prijelaza.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Kontrole za Kretanje:<\/strong>\n<ul>\n<li>Player (entitet igra\u010da) obi\u010dno uklju\u010duje komponente za upravljanje kretanjem, poput wasd-controls. Ove kontrole omogu\u0107uju korisnicima da se kre\u0107u po virtualnom prostoru.<\/li>\n\n\n\n<li>Portal komponenta pretpostavlja postojanje entiteta igra\u010da kako bi ispravno prilagodila kretanje korisnika pri prijelazu iz jedne scene u drugu.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Detekcija Sudara:<\/strong>\n<ul>\n<li>U ovom primjeru, dodan je entitet za detekciju sudara (a-cylinder) kako bi sprije\u010dio prolazak kroz objekte. Kada korisnik poku\u0161a kroz portal, detekcija sudara mo\u017ee sprije\u010diti prolazak kroz stvari koje bi trebale biti neprobojne.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>Ukratko, kamera i entitet igra\u010da su klju\u010dni za dobar do\u017eivljaj korisnika u virtualnom prostoru. Portal komponenta koristi ove elemente kako bi osigurala glatku tranziciju izme\u0111u razli\u010ditih scena ili web stranica. Bez kamere i entiteta igra\u010da, portal ne bi imao smisla jer korisnik ne bi mogao pratiti prijelaz i do\u017eivjeti virtualni prostor na prirodan na\u010din.<\/p>\n\n\n\n<p>Stoga u svoju Aframe scenu dodajte slijede\u0107i kod;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      &lt;a-entity\n        id=\"player\"\n        position=\"0 1.6 0\"\n        camera\n        wasd-controls=\"acceleration: 15;\"\n        look-controls=\"pointerLockEnabled: false\"\n      &gt;\n        &lt;a-cursor position=\"0 0 -.05\" scale=\".04 .04 1\"&gt;&lt;\/a-cursor&gt;\n        &lt;!--For Collision Detection--&gt;\n        &lt;a-cylinder radius=\"0.75\"&gt;&lt;\/a-cylinder&gt;\n      &lt;\/a-entity&gt;\n\n\n\n<\/code><\/pre>\n\n\n\n<p>Na kraju dodajte sky element. Primjerice;<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\t  &lt;a-sky color=\"blue\";&gt;&lt;\/a-sky&gt;\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4. Pogledajte svoj projekt:<\/h3>\n\n\n\n<p>Otvorite svoj projekt u web pregledniku i trebali biste vidjeti web portal. Kada korisnik pristupi portalu, bit \u0107e preusmjeren na zadanu web stranicu (u ovom slu\u010daju, <code>https:\/\/example.com<\/code>).<\/p>\n\n\n\n<p>To bi trebalo biti dovoljno da biste po\u010deli koristiti <code>aframe-web-portals<\/code> u va\u0161em A-Frame projektu. Prilagodite kod prema potrebama va\u0161eg projekta.<\/p>\n\n\n\n<p>Ovo je osnovno obja\u0161njenje dijelova koda.<\/p>\n\n\n\n<!-- partial:index.partial.html -->\n  <iframe style=\"width:100%; height:500px;\" id=\"preview-iframe\" srcdoc=\"Ure\u0111iva\u010d koda\"><\/iframe>\n  <div id=\"editor-container\">\n    <section id=\"html\" class=\"code-section\">\n<textarea style=\"width:100%;height:400px;\" class=\"code-textarea\">\n      \n<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" \/>\n    <title>Example 1<\/title>\n    <script src=\"https:\/\/aframe.io\/releases\/1.2.0\/aframe.min.js\"><\/script>\n    <script src=\"https:\/\/unpkg.com\/aframe-web-portals@1.0.1\/dist\/aframe-web-portals.umd.js\"><\/script>\n  <\/head>\n\n  <body>\n    <a-scene>\n      <!--Camera-->\n      <a-entity\n        id=\"player\"\n        position=\"0 1.6 0\"\n        camera\n        wasd-controls=\"acceleration: 15;\"\n        look-controls=\"pointerLockEnabled: false\"\n      >\n        <a-cursor position=\"0 0 -.05\" scale=\".04 .04 1\"><\/a-cursor>\n        <!--For Collision Detection-->\n        <a-cylinder radius=\"0.75\"><\/a-cylinder>\n      <\/a-entity>\n\n      <!--Portal-->\n            <a-entity\n        position=\"-3 0 -6\"\n        web-portal=\"url:https:\/\/hr.wikipedia.org\/wiki\/Stari_most_u_Mostaru; text:Stari Most;\"\n      ><\/a-entity>\n\n\n<a-sky src=\"https:\/\/3dkodiranje.com\/wp-content\/uploads\/2023\/11\/Realism_equirectangular-jpg_stari_most_u_Mostaru_1639036364_9544749-1024x512.jpg\"><\/a-sky>\n\n\n    <\/a-scene>\n  <\/body>\n<\/html>\n\n      <\/textarea>\n    <\/section>\n    <section id=\"css\" class=\"code-section\">\n      <textarea style=\"visibility: hidden;\" class=\"code-textarea\" placeholder=\"CSS\"><\/textarea>\n    <\/section>\n    <section id=\"js\" class=\"code-section\">\n      <textarea style=\"visibility: hidden;\" class=\"code-textarea\" placeholder=\"JS\"><\/textarea>\n    <\/section>\n  <\/div>\n  <!-- partial -->\n  <script>\n    document.addEventListener('DOMContentLoaded', function() {\n      var d = document;\n      var q = \"querySelector\";\n      var iframe = d[q](\"#preview-iframe\");\n      var area = document.querySelectorAll('.code-textarea');\n\n      function updateIframeSrcdoc() {\n        iframe.srcdoc = area[0].value + '<style>' +\n          area[1].value + '<\/style>' + '<script>' +\n          area[2].value + '<\\\/script>';\n      }\n\n      \/\/ Initialize iframe srcdoc on page load\n      updateIframeSrcdoc();\n\n      \/\/ Bind on each textarea change event\n      for (var i = area.length - 1; i >= 0; i--) {\n        area[i].addEventListener('input', updateIframeSrcdoc, false);\n      }\n    });\n  <\/script>\n\n\n\n<h3 class=\"wp-block-heading\">HTML Doctype i Osnovne Postavke<\/h3>\n\n\n\n<ul>\n<li><strong><code>&lt;!DOCTYPE html&gt;<\/code>:<\/strong> Deklaracija HTML doctype-a.<\/li>\n\n\n\n<li><strong><code>&lt;html&gt;<\/code>:<\/strong> Otvoravanje HTML elementa.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Head Sekcija<\/h3>\n\n\n\n<ul>\n<li><strong><code>&lt;head&gt;<\/code>:<\/strong> Otvoravanje head sekcije HTML dokumenta.<\/li>\n\n\n\n<li><strong><code>&lt;meta charset=\"utf-8\" \/&gt;<\/code>:<\/strong> Postavljanje znakovnog skupa na UTF-8.<\/li>\n\n\n\n<li><strong><code>&lt;title&gt;Example 1&lt;\/title&gt;<\/code>:<\/strong> Postavljanje naslova web stranice.<\/li>\n\n\n\n<li><strong>A-Frame i aframe-web-portals Skripte:<\/strong>\n<ul>\n<li><strong><code>&lt;script src=\"https:\/\/aframe.io\/releases\/1.2.0\/aframe.min.js\"&gt;&lt;\/script&gt;<\/code>:<\/strong> Uklju\u010divanje A-Frame skripte. A-Frame je okvir za razvoj virtualne stvarnosti.<\/li>\n\n\n\n<li><strong><code>&lt;script src=\"https:\/\/unpkg.com\/aframe-web-portals@1.0.1\/dist\/aframe-web-portals.umd.js\"&gt;&lt;\/script&gt;<\/code>:<\/strong> Uklju\u010divanje aframe-web-portals skripte koja omogu\u0107ava kreiranje portala na druge web stranice.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Body Sekcija<\/h3>\n\n\n\n<ul>\n<li><strong><code>&lt;body&gt;<\/code>:<\/strong> Otvoravanje body sekcije HTML dokumenta.<\/li>\n\n\n\n<li><strong>A-Frame Scena:<\/strong>\n<ul>\n<li><strong><code>&lt;a-scene&gt;<\/code>:<\/strong> Otvoravanje A-Frame scene.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Kamera i Kontrole<\/h3>\n\n\n\n<ul>\n<li><strong>Camera Entity:<\/strong>\n<ul>\n<li><strong><code>&lt;a-entity id=\"player\" position=\"0 1.6 0\" camera wasd-controls=\"acceleration: 15;\" look-controls=\"pointerLockEnabled: false\"&gt;<\/code>:<\/strong> Definiranje entiteta kamere s ID-om \"player\". Postavljanje pozicije, dodavanje komponenti kamere i kontrola pokreta pomo\u0107u wasd-controls. Ovdje se tako\u0111er onemogu\u0107uju look-controls pomo\u0107u <code>pointerLockEnabled: false<\/code>.<\/li>\n\n\n\n<li><strong>Cursor Entity:<\/strong>\n<ul>\n<li><strong><code>&lt;a-cursor position=\"0 0 -.05\" scale=\".04 .04 1\"&gt;&lt;\/a-cursor&gt;<\/code>:<\/strong> Dodavanje entiteta kursora. Kursor se koristi za interakciju u A-Frame sceni.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Collision Detection Entity:<\/strong>\n<ul>\n<li><strong><code>&lt;a-cylinder radius=\"0.75\"&gt;&lt;\/a-cylinder&gt;<\/code>:<\/strong> Dodavanje cilindra kao elementa za detekciju sudara. Ovo se \u010desto koristi kako bi se sprije\u010dilo prolazak kroz objekte u virtualnom prostoru.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Portali<\/h3>\n\n\n\n<ul>\n<li><strong>Portal Entities:<\/strong>\n<ul>\n<li><strong><code>&lt;a-entity position=\"-3 0 -6\" web-portal=\"url:<a href=\"https:\/\/hr.wikipedia.org\/wiki\/Stari_most_u_Mostaru\">https:\/\/hr.wikipedia.org\/wiki\/Stari_most_u_Mostaru<\/a>; text:Stari most u Mostaru;\"&gt;&lt;\/a-entity&gt;<\/code>:<\/strong> Definiranje entiteta portala s odre\u0111enom pozicijom, koji vodi na \"<a href=\"https:\/\/hr.wikipedia.org\/wiki\/Stari_most_u_Mostaru\">https:\/\/hr.wikipedia.org\/wiki\/Stari_most_u_Mostaru<\/a>\" i ima tekst \"<strong><code>Stari most u Mostaru<\/code><\/strong>\".<\/li>\n\n\n\n<li><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Zatvaranje HTML Dokumenta<\/h3>\n\n\n\n<ul>\n<li><strong><code>&lt;\/a-scene&gt;<\/code>:<\/strong> Zatvaranje A-Frame scene.<\/li>\n\n\n\n<li><strong><code>&lt;\/body&gt;<\/code>:<\/strong> Zatvaranje body sekcije.<\/li>\n\n\n\n<li><strong><code>&lt;\/html&gt;<\/code>:<\/strong> Zatvaranje HTML dokumenta.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/3dkodiranje.com\/index.php\/2023\/12\/04\/kako-napraviti-virtualne-3d-ture-u-aframe-radnom-okviru\/\">Idu\u0107a lekcija<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Ukoliko \u017eelite u svoju 3D scenu dodati druge web stranice to mo\u017eete napraviti pomo\u0107u komponente aframe-web-portals Ako \u017eelite koristiti aframe-web-portals, slijedite ove korake kako biste integrirali komponentu u svoj A-Frame projekt: 1. Postavite svoj A-Frame projekt: Prvo, postavite svoj A-Frame projekt ako ve\u0107 niste. To mo\u017eete u\u010diniti stvaranjem HTML datoteke i uklju\u010divanjem A-Frame skripti. Primjer [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/3dkodiranje.com\/index.php\/wp-json\/wp\/v2\/posts\/118"}],"collection":[{"href":"https:\/\/3dkodiranje.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/3dkodiranje.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/3dkodiranje.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/3dkodiranje.com\/index.php\/wp-json\/wp\/v2\/comments?post=118"}],"version-history":[{"count":29,"href":"https:\/\/3dkodiranje.com\/index.php\/wp-json\/wp\/v2\/posts\/118\/revisions"}],"predecessor-version":[{"id":259,"href":"https:\/\/3dkodiranje.com\/index.php\/wp-json\/wp\/v2\/posts\/118\/revisions\/259"}],"wp:attachment":[{"href":"https:\/\/3dkodiranje.com\/index.php\/wp-json\/wp\/v2\/media?parent=118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/3dkodiranje.com\/index.php\/wp-json\/wp\/v2\/categories?post=118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/3dkodiranje.com\/index.php\/wp-json\/wp\/v2\/tags?post=118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}