Posts by jordi

    Hi,

    there's a new small release fixing some issues :

    - FIX : typo error on texture path ERROR: loading of './assets/model3d/texturepng' failed! [2x]
    - FIX : flip polygons wind direction was not correctly applied every time
    - FIX : json generation on windows from multiples files for 3d projects
    - NEW : improved speed on generating a new project
    - some other small issues

    You can download it here

    Kind regards

    Hi,

    face is reversed

    With the new release you can flip the winding direction of the polygon
    If the decision of the polygon winding direction was wrong, now you can correct it.
    Just press Shift + F and a new modal will open to allow you force to flip the direction of the polygon

    Kind regards

    Hi,

    The texture image in jpg format is OK


    that's true, everpano is trying to resize the image and there is an issue with png files...
    Thanks for pointing that out, will be solved soon.
    As a work around, you can :
    1.- replace the file it self
    2.- replace the extension in the model scene

    Code
    <scene name="scene_model3d">
     <sphere url="%VIEWER%/assets/model3d/texture.jpg" />

    Hi,

    texturejpg should be texture.jpg


    Thanks for pointing that issue, is now solved will be available in next release

    preview function removed


    The preview function was removed few versions ago, because the texture need to be calculated anyway, and that takes long time even is a preview, on the other side, the render process has been optimized, so if panos are not modified they do not need to be reprocessed. Anyway, I'm already planning a new preview where textures are projected in relatime.

    created a simple scene with blender


    Can you provide more details, maybe you can send me the json file created, are you adding the texture file to the folder ? Are the panoramas rendered correctly ?

    Kind regards

    Hi,

    I do not have skecthup app so I do not now that much about the software but you could try :

    1.- Open your model in SketchUp Pro.
    2 .- Go to “File”, then “Export”, and finally “3D Model…”.
    3 .- Choose “COLLADA File (*.dae)” from the drop-down list.
    4 .- Import the file in Blender, and using the script https://everpano.com/tools/blender/everpano_addon.py (take a look at the tutorial here https://www.youtube.com/watch?v=a8LM8LP7r4s)

    5.- you can already import in everpano 3D

    That could be the process, but is a not proven pipeline as I do not have access to sketchup..

    Kind regards

    Hi,

    Thanks for the comments *squint*

    tour takes much time to load.

    The obj model loaded initially is 6 MB and the texture 2.3MB so it's not too much amount of bytes to download, then that would depend on your internet connection.
    About the files, they could still be a bit more optimised by loosing some quality, but from my perspective is a good balance between amount of faces (geometry) and file weight.

    Kind regards


    Hi,

    There is a new release everpano 3D 1.5.0

    Virtual Tours reimagined

    What's new :

    Import 3D models

    Now you can use everpano not only for modelling, but also for importing 3d models generated by third party software, like Blender, Maya, 3dmax, Sketchup ...
    And on the other hand import the rendered panoramas from the model, and create a 3D virtual out of it.

    demo of a model with panoramas imported in everpano 3D


    Is this new release only for those who use CGI software ?

    While this release was initially though for the cgi users, because many of you were asking for such a feature, on the way of implementing all the necessary features, I came across with new ideas that broaden the scope of the new version.
    Those ideas were basically about photogrammetry and lidars, so in that regard, a new way for creating virtual tours based on panoramas, was being defined, were the users did not even need to make panoramas in the field, they could be generated in postproduction from a 3d model.

    What is CGI ?

    Computer Generated Imagery, creates still or animated visual content with computer software.
    CGI is also called 3D imaging or 3D Rendering. CGI usually refers to the 3D computer graphics used to create characters, scenes, and other special effects in movies and games. This technology is also used in advertising, architecture, engineering, virtual reality, and even art. In traditional photography, film or a digital camera captures an image where computer-generated images are created in computer software.
    Creating 360 panoramas from 3d models in blender is quite simple, you can take a look at this short tutorial

    demo of a 3d model in blender

    What is Photogrammetry ?

    Photogrammetry is the process of taking multiple photographs of an object or building, or landscape from a multiple angles and matching them together using common control points to create a 3D mesh out of it with realistic textures. Any digital camera can be used with specific software that detects those common points between the diferent images and from that information it can reconstruct an initial point cloud, which is then converted into a mesh.
    Later in this post I will talk about what software can be used to fit our goals.

    photogrammetry illustration with a castle and multiple view points from drone

    What is a Lidar ?

    Lidar is an acronym for Light Detection And Ranging or Laser Imaging Detection And Ranging.
    Is a technology for determining the depth of a specific target using a laser and measuring the time for the reflected light to return to the receiver

    2 dimensions lidar hardware

    Why also using panoramas ?

    While you may think that navigating through the 3d model would be enough, the great advantage of using pre rendered panoramas is that you can make, extensive light and texture calculations on high specification computer, generating a great image that could never be calculated as it is in real time, and therefore giving much more realism to the project.
    On the other hand the software gives tools to make it more flexible, so you can use real world panoramas merged with models that has been generated using photogrammetry for example, that will give you the best of both worlds, so while you can have acces to 3d information of the model, you can still have all the realism of a real panorama.

    Use cases for the new release :

    • CGI

      Those users who are making tours of non existing locations, by modelling them with CGI software, can now import those models and the rendered panoramas

      logos of the different modellings software
    • Pure photogrammetry

      You can make 3d models just by taking multiple images from different angles, you don't even need a tripod if the light conditions are enough for hand held shooting.
      Once you have your model with textures you can generate panoramas from the high density and high texture reconstruction.
      You should make a simplified model and a single texture for the web project
      Using the everpano script for blender you can render all panoramas in a single click and also create the JSON file with all camera positions for creating the everpano 3D project
      You can see a video on how to create it here
      You can download the everpano blender addon here Here small and quick overview of the process

      sony camera for making photogrammetry
    • Lidar + panos

      There are some Lidars that are able to generate colored point clouds, which can be converted to meshes and also to panoramas. Some of this hardware could be :

      While this type of hardware tends to be very expensive like the leica blk360 around $18.000.
      We have other alternatives like the integrated Lidar in the iphone 12/13 pro max, or in the ipad pro That together with some specific apps can generate a 3d model.
      Then you can shoot some quick panos using a ricoh theta camera, and finally merging all data using everpano 3D.

      iphone 12 pro max with integrated lidar and ricoh theta camera
    • Photogrammetry + panos

      Using a drone to capture images and video for photogrammetry reconstruction, and ground panoramas using a ricoh theta camera

      dji mini 2 drone used together with ricoh theta camera
    • Others ...

      This is a really broad field and many new pipelines can be defined, I already have a couple more on my experimental bench, which will be presented during this month.

      1. The first one is about matterport
      2. The second one will need to wait a bit to be disclosed...

      Just figure out new ways to create 3d virtual tours.


    What photogrammetry software should be used

    The market of software for reconstructing 3d models from images and other sources is quite big you can find multiple apps, here a short list of the ones that I consider most apporpiate :

    • Agisoft Metashape

      That would be my initial recomendation, it works on mac & windows, it's very complete, you have the professional version and the standard. I would higly recommend the standard version, it's $179, which already has all the features taht you will need to create virtual tours from fieheye images as defined in the pipelines above.

    • Reality Capture

      Seems to be the most complete, powerful and accurate. It has an interesting payment method, where user pay per input, so you can just download it test it, make your project and when you want to license your project you pay for the amount of input you used, even all the calculation is done in your computer. You can also use multiple source of information, like combining lidars and images, and seems to be very ideal to combine indoor and outdoor models.

    • Meshroom

      Open source project available for Windows and Linux, has an easy pipeline, but from my experiemtns is not fast and not that much accurate as others, also has some issues using fisheye images

    • 3DF Zephyr

      Very complete set of tools, I could not test it personally but it's amongst the best software in the topic.


    How does it works

    So the process is very simple, now when you create a new project, you can choose between 2 types of project :

    everpano 3D types of project

    After selecting the type of project as 3D we can set the project name and the project path as usually, and press the create project button
    After that we need to drag our content to the project. We used to just drag panoramas, now this is a bit different :
    You can do it with 2 methods :

    1. Dragging a JSON file that already contains all the necessary information
    2. Dragging all necessary files, which at the end will create a JSON file

    Which are the necessary files for creating a 3D project ?
    • panoramas
    • obj model
    • texture file
    • optionally you can drag a simplified model for the raycasting system

    Why should I need a simplified model ?
    Some times the models coming from cgi or from photogrammetry can have thousands of faces, that will put into trouble the raycasting system, that's why everpano 3D allow to load a simplified model that will be used only for the raycasting, so for making measures and for orienting the mouse hotspot.
    The other model will be used as the dollhouse model.

    How can I easily simplify the model ?
    While every 3d modelling software may has it's own method, with blender is very easy and straight forward, you can follow this simple tutorial

    How is everpano 3D able to figure out which is the texture file and the raycast model ?
    There are naming conventions to indicate that so, for the texture file it needs to contain the word "texture"
    For the raycast model the obj file must contains "_min" or "_raycast"


    The JSON file

    This file contains all the definitions from your project, the main parts are :

    • model
    • project
    • panoramas
    • evertags
    Here a simplified example of the JSON file

    If you drag all the necessary files defined above you will get a JSON file as a blueprint for your project

    {
        "model" :
        [
            {
                "name": "model",
                "modelPath": "/path/to/your/model.obj",
                "modelMinPath": "/path/to/your/model_min.obj",
                "texturePath": "/path/to/your/texture.jpg"
            }
        ],
        "project": 
        {
            "name": "Project Name",
            "unit_system": "metric",
            "units": "mt",
            "align_panoramas": false
        },
        "panoramas" : 
        [
            {
                "name": "pano name 0",
                "path": "/path/to/your/panorama0.jpg",
                "position" : {"x":-30.000, "y":1.400, "z":0.340},
                "rotation" : {"x":0.000, "y":0.000, "z":0.000}
            },
            {
                "name": "pano name 1",
                "path": "/path/to/your/panorama1.jpg",
                "position" : {"x":-28.000, "y":1.400, "z":0.340},
                "rotation" : {"x":0.000, "y":0.000, "z":0.000}
            }
        ],
       "evertags" : 
        [
                {
                   "title":"evertag 1",
                   "color":"#fafafa",
                   "type":"link",
                   "content":"https://www.everpano.com",
                   "id":0,
                   "position":{
                       "x":1.000,
                       "y":1.400,
                       "z":0.000
                   }
               }
        ]
    }
    * The rotation of the panoramas is defined in degrees * All the position values must be in the same unit as the one defined in the project.units * Units can be :
    • ki ( 100000 )
    • he ( 10000 )
    • da ( 1000 )
    • mt ( 100 )
    • de ( 10 )
    • cm ( 1 )
    • mi ( 0.1 )
    * Default unit is centimeters (cm)

    Can I still use the evertags in 3d model projects?

    Yes, of course, as you have seen above they can initially be defined in JSON file, and also you can simply add new evertags anytime, to the project by clciking the add + button you will find in the evertag section.
    By default is going to create it in the 0,0,0 position and you can just drag it to any location you want.


    Setting up the height of panoramas and evertags

    In order to make it easier to arrange the height of all the elements in the 3d model, everpano 3D , has and in built feature that will calculate the ground location at any position.
    So if you know that the camera was exactly at 120 cms from the ground, but you do not know the ground heigt at that location (which will be mostly the case) you can just use the shortcut
    Shift + H that will open a modal window that allow to set the height of the selected element or from all the elements of it's type (panos or evertags)
    everpano 3D will try to find the mesh position in that XZ location and add the amount you input. If there is no intersection with the mesh at that point, 0 will be the initial height.

    modal window to set element height

    You can select the checkbox to apply the height to all the elements of the same type (panos or evertags)
    Note that the units are in cms


    Other small implementations :

    1. Flipping the winding direction of the polygon
      If the decision of the polygon winding direction was wrong, now you can correct it.
      While rendering your project everpano 3D will attempt to fix the winding direction of every polygon, to make it look into the correct side, but sometimes it can make a wrong guess, so now by pressing
      Shift + F a new modal will open to alow you force to flip the direction of the polygon


    What's next - Roadmap :

    • Adding extra usage cases
    • Unified documetation
    • Blog with articles in everpano website
    • More project types
    • Different management for merging panos into models
    • ...

    Author Note

    I know that maybe there are some topics that are not covered that much, such as all the photogrammetry knowledge behind the scenes, which is a really large topic on itself, but on one side it's plenty of tutorials from the different software, and on the other side, I will be publishing as fast as posible, quite large tutorials, where I will explain all the detaills about the different processes. On the other side I wanted to prepare more and better examples, because I have plenty of material for doing so, but I would never have finished if I tried to show all the examples I have in the basket, also the app is ready for the release, and I wanted to give some basic information and allow you to start playing around with all those new concepts.

    Finally today is 3 years since the first release of everpano 3D, and being here today with those new pipelines and efatures was something I could not expect in the begging of this journey.



    “Ideas are the source of all things.” - Plato

    Hi,

    I know that only the free part of the plugin is integrated into Everpano

    If you are using everpano 3D version 1.4 then you have access to the pro version of the navigator plugin.
    You just need to set editMode = "true" in the declaration of the plugin in the main.xml file.

    If you have some further issue about that you can contact me via email at info@everpano.com, and if you share the url of the project we can take a deeper look.

    Kind regards

    Hi,

    In the action <action name="flytopano"> that you can find the in the main.xml file, you can remove the flag KEEPVIEW, that will allow you to have specific limitations for each pano.

    Kind regards

    Hi,

    You can make usage of the everpano raycaster for your own implementations.

    everpano raycaster

    The navigator plugin provides those 2 public functions to get information about 3D positions of your model

    plugin[navigator].ev_mousetomesh
    plugin[navigator].ev_raytomesh

    ** Of course a requirement is that the project is done using everpano 3D, it won't be valid otherwise.

    ev_mousetomesh : transform the mouse position into a 3d position of the mesh
    ev_raytomesh : transform a ray which has origin vector and direction vector into a 3d position of the mesh

    Demo of usage :

    <events name="everpano_raycaster" keep="true"  
    onclick="plugin[navigator].ev_mousetomesh(get(mouse.x),get(mouse.y),my_d,my_x,my_y,my_z,my_nx,my_ny,my_nz,my_rx,my_ry,my_rz); 
        debug('distance : ',my_d); 
        debug('position'); 
        debug('x : ',my_x); 
        debug('y : ',my_y); 
        debug('z : ',my_z); 
        debug('normals'); 
        debug('nx : ',my_nx); 
        debug('ny : ',my_ny);
        debug('nz : ',my_nz); 
        debug('rotation'); 
        debug('rx : ',my_rx); 
        debug('ry : ',my_ry); 
        debug('rz : ',my_rz); 
    " 
    />


    the ev_raytomesh is expecting an origin position vector XYZ and a direction vector XYZ
    plugin[navigator].ev_raytomesh(ox,oy,oz,dx,dy,dz,my_d,my_x,my_y,my_z,my_nx,my_ny,my_nz,my_rx,my_ry,my_rz);
    If the ray that we generated intersects with the mesh we are going to get the same values as above saved in the variables name that we provided.

    Happy coding

    Kind regards
    Hi,
    as you may have already seen, since everpano 3D v1.4 it was introduced the concepts of evertags.
    evertag representation

    It's mainly a 3d hotspot located in space, and it's very convenient, because in case it's visible from multiple panos, you do not need to be creating the hotspot multiple times and relocating it in every scene.

    You just create it once and enjoy it everywhere when it's visible, yes also in the dollhouse.

    So from everpano 3D you can already set up some content and color, title :
    evertag editor

    everpano is already managing the evertags in a very convenient way for those who do not want to code, so you have this 4 basic types
    • link
    • pano
    • video
    • html
    But you can extend it, and customize every aspect, and even create your own features, that's why I'm writting this post to invite you playing around evertags concept.

    This is the basic javascript array for the evertags :
    krpano.evertags = [
        { name : "evertag_103_1", type : "link", title : "wall oven",  color : "#34aadf", content : "https://yoururl.com", x : 59.117, y : -41.058, z : -73.329},
        { name : "evertag_102_1", type : "pano", color : "#34aadf", content : "scene_bedroom", x : -124.191, y : -69.664, z : -77.409},
        { name : "evertag_104_1", type : "video" , title : "living in barcelona", color : "#34aadf", content : "UMCRDMuOKDo", x : -284.704, y : -68.648, z : 38.448},
        { name : "evertag_105_0", type : "html", title : "ceramic tiles",  color : "#34aadf", content : "Tiles are usually thin", x : -104.989, y : 0, z : 97.517},
    ];


    And the action defined below can be used a reference to generate your custom evertags with your own aspect and your own behaviour.

    <action name="setEvertags">
       for(set(i,0), i LT evertags.length, inc(i),
           // debug available information
           debug(evertags[get(i)].name);
           debug(evertags[get(i)].title);
           debug(evertags[get(i)].type);
           debug(evertags[get(i)].content);
           debug(evertags[get(i)].color);
           debug(evertags[get(i)].x);
           debug(evertags[get(i)].y);
           debug(evertags[get(i)].z);
           debug(' - - END EVERTAG - -');
           // set unique name and add hotspot
           copy(hs_name, evertags[get(i)].name);
           addhotspot(get(hs_name));
           copy(hs, hotspot[get(hs_name)]);
           // set position			
           copy(hs.tx, evertags[get(i)].x);
           copy(hs.ty, evertags[get(i)].y);
           copy(hs.tz, evertags[get(i)].z);
           if(evertags[get(i)].type == 'link',
               hs.loadstyle(customLink);
               calc(hs.onclick,'myLinkCustomAction(' + evertags[get(i)].content + ');');
        );
        ...
    );
    </action>


    Note that something you will need to do also when managing evertags on your own is to tell everpano_ui plugin not to do it on it's side, you can achieve that by defining showEvertags = "false" in the plugin declaration

    Finally find here the code that could be used as a base for a evertag custom style

    <style name="customLink" keep="true" type="text" 
    	css="font-size:20px;text-align:center;" vcenter="true"
    	width="200" height="200" scale="0.05" alpha="1"
    	bgroundedge="100" bgborder="2 0x000000 1" bgshadow="0 0 5 0xFFFFFF 1.0"
    	oversampling="2" mipmapping="true" zorder="1"
    	distorted="false" depth="0" depthbuffer="true"
    	torigin="world" rotationorder="xyz" 
    	onover.addevent="tween(scale,0.10); tween(alpha,0.6);"
    	onout.addevent="tween(scale,0.05); tween(alpha,0.3);"
    />


    Happy coding

    Kind regards
    Hi,
    I just want to make a quick overview about the portals in the latest release everpano 3D v1.4.1.
    First there was small issue that did not allow to delete portals, and that is solved now, so I encourage you to use portals in order to make a good registration of the different models in the 3D editor.

    So as you may know portals is a type of geoemtry that is not being represented in the final model, it's just a kind of helper that allows us to better register the location of our models in the 3d space.

    In previous version 1.3 the portal concept was represented by a white rectangle in the 2d space.

    Now in version 1.4 the concept is the same but instead of making a white rectangle, we are getting 2 cubes that defines the location of the vertical lines from the portal
    portal diagram


    That way when we get those small cubes then it's easier to find the correct position with other models

    portal registration


    Kind regards