Beiträge von Tebasaki

    I'm not sure if this is the right place in the forums.

    I'm looking for a go-to person to help me with my tours. I have a basic tour I'm working on and selling, but as I'm selling more and more of them, I can't spend as much time learning and updating code as I would be able to so I'm looking for someone to help my small business grow. I have a base tour already done and coded but I'll be adding new features as I go along; many of them are even listed on the Krpano website!

    I'm looking for someone that's:
    - Responsive and communicates (commenting in code too!)
    - Knows enough xml to handle not-so difficult tasks
    - Can get things working across all major browsers (IE, Firefox, Chrome) and all mobile devices
    - Can run tests to make sure things function properly (I've had shoddy coders in past projects that don't even test their code)

    Please let me know if you're interested and what price you charge per job, task, or hour as I've got a list of changes and additions.

    Thank you for your time!
    John

    I've created this autotour and I included it in my tour.xml

    <krpano>

    <!-- actions -->

    <action name="autotour0">
    set(step,1);
    set(events.onidle, autotour0() );

    oninterrupt(break);
    </action>

    <action name="autotour1">
    set(step,1);
    set(events.onidle, autotour1() );

    oninterrupt(break);
    if(step == 1, lookto(150,30,120,smooth(10,50,5)); inc(step); );
    if(step == 2, wait(1); inc(step); );
    if(step == 3, lookto(320,0,120,smooth(10,50,5)); inc(step); );
    if(step == 4, wait(1); inc(step); );
    if(step == 5, lookto(380,30,120,smooth(10,50,5)); inc(step); );
    if(step == 6, wait(1); set(step,1); );
    </action>

    <action name="autotour2">
    set(step,1);
    set(events.onidle, autotour2() );

    oninterrupt(break);
    if(step == 1, lookto(32,0,10,smooth(10,50,525)); inc(step); );
    if(step == 2, wait(1); inc(step); );
    if(step == 3, lookto(75,30,120,smooth(10,50,525)); inc(step); );
    if(step == 4, wait(1); set(step,1); );
    </action>


    </krpano>

    Then on a scene that I want, say, a pano to play tour 1, I'll add that:

    <scene name="scene_kitchen" title="Kitchen" onstart="autotour1();" thumburl="panos/kitchen.tiles/thumb.jpg" lat="" lng="" heading="">

    And it works great. But, here's a problem. When I navigate to a pano that has nothing in the onstart, it continues with the last autotour that was called. This means that if I want no movement at all I'll have to create an action that has no movement autotour0() and plug that in. I don't like doing that extra work.

    What can I add to make the autotour action cease when I change panos?

    It'll be hard because I'm making this flyout in another xml file that I call from the tour.xml I don't think I can use hotspots because it's not in the scene like you said. How do you implement your hotspots if you're not using the example like on the krpano website?

    Well I've got an idea. There's and example where you can tween from one hotspot to another.

    https://krpano.com/examples/116/e…ver-change.html

    Well I took this example and exited the image one to look like a red dot. It work perfectly (although I would like to cram this whole thing into a style like the flyouts).


    <hotspot name="spot"
    url="flyouthotspot.png"
    distorted="true"
    ath="0"
    atv="0"
    scale="0.5"
    rx="0" ry="0" rz="0"
    zorder="2"
    onover="set(hotspot[spot_over].visible,true); tween(hotspot[spot_over].alpha,1,0.5,default);"
    onout="tween(hotspot[spot_over].alpha,0,0.5,default, set(hotspot[spot_over].visible,false));"
    onclick=""
    />

    <hotspot name="spot_over"
    url="image2.jpg"
    zorder="3"
    visible="false"
    enabled="false"
    alpha="0"
    onloaded="copyhotspotsettingsfrom(spot);"
    />

    <action name="copyhotspotsettingsfrom">
    copy(distorted, hotspot[%1].distorted);
    copy(ath, hotspot[%1].ath);
    copy(atv, hotspot[%1].atv);
    copy(scale, hotspot[%1].scale);
    copy(rx, hotspot[%1].rx);
    copy(ry, hotspot[%1].ry);
    copy(rz, hotspot[%1].rz);
    </action>

    Now the problem is the onclick "". how can I link the flyout style with these hotspots? The hotspot xml has 4 stages, so somewhere I'm going to have to plug in this tweening, but I'm not wise enough to know where. Here's the flyout code:

    <!-- use a <style> to share the same attriubtes for all hotspots -->
    <style name="flyoutimage"
    distorted="true"
    backup_rx="0"
    backup_ry="0"
    backup_rz="0"
    backup_scale="0"
    backup_zorder="0"
    flying="0.0"
    flystate="0"
    onclick="if(flystate == 0, flyout_by_name(get(name)), flyback_by_name(get(name)) );"
    />

    <!--
    flyout/flyback actions
    (for more stylish in/out animations play with different tweentypes and times)
    -->

    <action name="flyout_by_name">
    <!-- make all other hotspots flying back -->
    flyback_others();

    <!--
    for best control set 4 fly states:
    0 = normal
    1 = while flying out
    2 = out
    3 = while flying back
    -->

    <!-- save original position/rotation -->
    if(hotspot[%1].flystate == 0,
    copy(hotspot[%1].backup_rx, hotspot[%1].rx);
    copy(hotspot[%1].backup_ry, hotspot[%1].ry);
    copy(hotspot[%1].backup_rz, hotspot[%1].rz);
    copy(hotspot[%1].backup_scale, hotspot[%1].scale);
    copy(hotspot[%1].backup_zorder, hotspot[%1].zorder);
    );

    <!-- set new state -->
    set(hotspot[%1].flystate,1);
    set(hotspot[%1].zorder,99);

    <!-- tween the rotations values to 0 for a flat screen view -->
    tween(hotspot[%1].rx, 0);
    tween(hotspot[%1].ry, 0);
    tween(hotspot[%1].rz, 0);
    tween(hotspot[%1].scale, 1.5);

    <!--
    tween 'flying' to 1.0,
    this makes the hotspot independent from the panorama rotation and scaling
    -->
    tween(hotspot[%1].flying, 1.0, 0.5, default, set(hotspot[%1].flystate,2); );
    </action>


    <action name="flyback_by_name">
    if(hotspot[%1].flystate != 3,
    set(hotspot[%1].flystate,3);

    <!-- tween back to the stored backup values -->
    tween(hotspot[%1].rx, get(hotspot[%1].backup_rx) );
    tween(hotspot[%1].ry, get(hotspot[%1].backup_ry) );
    tween(hotspot[%1].rz, get(hotspot[%1].backup_rz) );
    tween(hotspot[%1].scale, get(hotspot[%1].backup_scale) );

    copy(hotspot[%1].zorder, hotspot[%1].backup_zorder);

    <!-- tween 'flying' also back to 0.0 -->
    tween(hotspot[%1].flying, 0.0, 0.5, default, set(hotspot[%1].flystate,0); );
    );
    </action>


    <action name="flyback_others">
    for(set(i,0), i LT hotspot.count, inc(i),
    if(hotspot[%i].flystate GT 0, flyback_by_name(get(hotspot[get(i)].name)); );
    );
    </action>

    Also, while the first image (the red dot) should be the same across all flyouts, the on onover image and the flyout image will be unique.

    I need some help!

    So how do you go about making a hotspot that's fullscreen, making sure it's fullscreen for all devices (mobile, tablet, PC)? I could see it setting the alpha up, changing the z-order, and maybe even using an all-black jpg but does that still make it so you can't click behind it?

    What does your code look like if you don't mind me asking?

    Currently the flyout example allows for the user to continue to look around while the image is enlarged. Is there anyway to darken everything behind the zoomed in picture and make the user unable to look around until the flyout has returned to it's original spot?

    Thanks!
    John

    I've used the flyout images and they're great. However in places where the I want it to show more of the pano than the flyout image, I'd prefer a small thing like a red dot, or a logo (this also makes all the flyouts uniform).

    Is there any way to make it so that the flyout image is one thing and then when clicked on morphs or changes into the picture you're trying to show?

    thanks!

    I've had some xml work done and I have a basic code down for the skins and navigation. This was done back in version 1.16.2. There have been multiple updates to 1.17, so when I want to apply my look to a new tour I render it with the make vtour droplet and then copy the pano folder over the old folder and all the scenes of the new xml into the old tour.xml code that has my look. Does doing this method just downgrade the tour back to the 1.16.2? I want it to be the most recent release but I would have to rewrite the xml each time there's a new version of krpano. Any ideas?

    I've gotten the example (listed below) to work on my pano, and it's fantastic! Is there anyway to write the new hotspot position back to the xml file like the tour editor?

    https://krpano.com/examples/116/e…e-hotspots.html

    I've also noticed by the draggable hotspots example that I can copy the atv and ath (making it easier to copy paste the code) however my code doesn't allow for that; the cursor turns into a finger. What piece of code am I missing? I see there's a

    <control keycodesin="" keycodesout="" />

    which I think is what allows me to select the text, but maybe I've putting it in the wrong place?

    Thanks!
    John

    I was looking at that example on the website of the picture flyouts and I'm trying to incorporate it in my pano. The one that's used as an example is too complicated. I'm just looking for a simple way to put an image (can be the picture image or even a placeholder icon) that when clicked does the flyout and when clicking again anywhere it shrinks back.

    I've tried to straight up copy the code but I can't seem to get it implemented. Could someone explain it like I'm 5? I've been trying to get this for quite awhile now.

    Here's the link:
    https://krpano.com/examples/116/e…e-hotspots.html

    thank you very much!

    John

    UPDATE:

    I got it working with the example images, however I'll have to play with the settings to get them where I want. It would be cool if you could also adjust the brightness/contrast, add some filters so you could blend the images into you scene; that would be hot!

    The only problems I see at this time is that when I flyout an image and click anywhere other than the image I can still look around in the panorama. So if I look 180 degrees from the position of the flyout and then click to return the flyout to it's original place it will stop elsewhere and no longer be clickable. One solution would be to disable navigation (looking around) when the image has been flown out. Any ideas?

    The other problem I see is that I have to pre-size all the images. Is there anyway to limit the size of the full image to a maximum amount?

    To a certain extent I still use the old hotspots (the flashing circles) and I've recently added an autotour that pans around the room. however when it does this the animations for the hotspots stops dead in it's tracks. Below I've added my code for the autotour, how can I keep those hotspot animations going while the autotour is going?


    <action name="startup">
    if(startscene === null, copy(startscene,scene[0].name));
    loadscene(get(startscene), null, MERGE);
    skin_hideskin(); <!-- start with control bar minimized -->
    realtor_mobile();<!-- mobile realtor area minimized -->
    playsound("bg", "sound.mp3|sound.wav", 0);<!-- start music loading both filetypes for browers differences -->
    toggle_sound();<!-- start tour with sound off -->
    set(step,1);
    set(idletime,1);
    </action>


    <action name="autotour">
    set(events.onidle, autotour() );


    oninterrupt(break);
    if(step == 1, lookto(150,30,120,smooth(10,50,5)); inc(step); );
    if(step == 2, wait(1); inc(step); );
    if(step == 3, lookto(320,0,120,smooth(10,50,5)); inc(step); );
    if(step == 4, wait(1); inc(step); );
    if(step == 5, lookto(380,30,120,smooth(10,50,5)); inc(step); );
    if(step == 6, wait(1); set(step,1); );
    </action>

    <scene name="scene_blue_skies" title="Blue Skies Room" onstart="autotour();" thumburl="panos/blue_skies.tiles/thumb.jpg" lat="" lng="" heading="">
    ...scene stuff here...
    </scene>

    I'm making some tours that can be pretty roomy (as in a lot of rooms!) so it's fantastic that I can use the tour editor and just plunk them in. However currently there's just the arrow icon that is used for all the hotspots. In the older version of krpano there was this flashing circle hotspot that I've modified and created a plethora of different ones. Since the tour is larger it's a time sink to go in after putting all those arrows in and replacing them with the ones I've created.

    How would I go about modifying the tour editor so when I place a hotspot it asks me which hotspot I've created to use, and then to which other pano (as it normally does)? Alternatively does anyone know of a program that will allow me to do this that I might be able to download or purchase (I've seen on the forum some folks having their own tour editors)?

    thank you!

    Ok, here's what I tested:


    <krpano version="1.16" title="123 4th Street" onstart="startup();">


    <action name="startup">
    if(startscene === null, copy(startscene,scene[0].name));
    loadscene(get(startscene), null, MERGE);
    skin_hideskin(); <!-- start with control bar minimized -->
    realtor_mobile();<!-- mobile realtor area minimized -->
    playsound("bg", "sound.mp3|sound.wav", 0);<!-- start music loading both filetypes for browers differences -->
    toggle_sound();<!-- start tour with sound off -->
    </action>

    <action name="autotour">
    set(step,1);
    set(idletime,1);
    set(events.onidle, autotour() );

    oninterrupt(break);
    if(step == 1, lookto(150,30,120,smooth(10,50,5)); inc(step); );
    if(step == 2, wait(1); inc(step); );
    if(step == 3, lookto(320,0,120,smooth(10,50,5)); inc(step); );
    if(step == 4, wait(1); inc(step); );
    if(step == 5, lookto(380,30,120,smooth(10,50,5)); inc(step); );
    if(step == 6, wait(1); set(step,1); );
    </action>

    <action name="autotour1">
    set(step,1);
    set(idletime,1);
    set(events.onidle, autotour1() );

    oninterrupt(break);
    if(step == 1, lookto(75,30,120,smooth(10,50,525)); inc(step); );
    if(step == 2, wait(1); inc(step); );
    if(step == 3, lookto(32,0,10,smooth(10,50,525)); inc(step); );
    if(step == 4, wait(1); set(step,1); );
    </action>

    And then in the scenes I have:

    <scene name="scene_blue_skies" title="Blue Skies Room" onstart="autotour();" thumburl="panos/blue_skies.tiles/thumb.jpg" lat="" lng="" heading="">
    ...
    </scene>

    <scene name="scene_park_1" title="Park 1 Room" onstart="autotour1();" thumburl="panos/park_1.tiles/thumb.jpg" lat="" lng="" heading="">
    ...
    </scene>

    Ideally what I'd like there is that it does the autotour for the first one and then autotour1 for the second pano and so on. Here's the issues I see with this code:
    > The menubar that's supposed to be hidden at the beginning is now showing until a user action is taken (clicking or moving the pano)
    > After navigating to the next scene the startpoint is way off the first lookat so the view is quickly whipped over to the first coordinates
    > The title of the next scene doesn't change to the name of the second scene until after a full execution of the autotour1() action

    ---UPDATE---

    I changed up the code a bit to include the step setup in the startup action:

    <krpano version="1.16" title="123 4th Street" onstart="startup();">

    <action name="startup">
    if(startscene === null, copy(startscene,scene[0].name));
    loadscene(get(startscene), null, MERGE);
    skin_hideskin(); <!-- start with control bar minimized -->
    realtor_mobile();<!-- mobile realtor area minimized -->
    playsound("bg", "sound.mp3|sound.wav", 0);<!-- start music loading both filetypes for browers differences -->
    toggle_sound();<!-- start tour with sound off -->
    set(step,1);
    set(idletime,1);

    </action>

    <action name="autotour">
    set(events.onidle, autotour() );

    oninterrupt(break);
    if(step == 1, lookto(150,30,120,smooth(10,50,5)); inc(step); );
    if(step == 2, wait(1); inc(step); );
    if(step == 3, lookto(320,0,120,smooth(10,50,5)); inc(step); );
    if(step == 4, wait(1); inc(step); );
    if(step == 5, lookto(380,30,120,smooth(10,50,5)); inc(step); );
    if(step == 6, wait(1); set(step,1); );
    </action>

    <action name="autotour1">
    set(step,1);
    set(idletime,1);
    set(events.onidle, autotour1() );

    oninterrupt(break);
    if(step == 1, lookto(75,30,120,smooth(10,50,525)); inc(step); );
    if(step == 2, wait(1); inc(step); );
    if(step == 3, lookto(32,0,10,smooth(10,50,525)); inc(step); );
    if(step == 4, wait(1); set(step,1); );
    </action>

    <scene name="scene_blue_skies" title="Blue Skies Room" onstart="autotour();" thumburl="panos/blue_skies.tiles/thumb.jpg" lat="" lng="" heading="">
    ...
    </scene>

    <scene name="scene_park_1" title="Park 1 Room" onstart="autotour1();" thumburl="panos/park_1.tiles/thumb.jpg" lat="" lng="" heading="">
    ...
    </scene>


    This fixes the first problem with the menubar starting popped out. I modified the smooth function from 525 to 5 and that slowed it down. All that's left is the name of the scene doesn't change until a full rotation of the if statements.