Posts by Kabkee

    I’m looking for a plugin similar to Matterport’s navigation.

    I know the everpano 3D navigator exists, but it’s only for everpano 3D. The depthmap_navigation.xml plugin is also quite good for general 3D world navigation and it supports collision detection.

    However, I need a plugin that includes the following features:

    1. A mouse indicator for ground and walls.

    2. Triggering the loadscene action when navigating close to specific hotspots.

    3. Calling the nearest hotspot’s loadscene action when clicking on the wall or ground.

    I could potentially create my own plugin, but I currently don’t have any ideas on how to start. If you have any advice or inspiration, please share.


    ### Google Map Layer Visibility Issue

    **Previous Version (1.19):**
    In version 1.19, there were no issues.

    **Current Version (1.21):**
    However, in version 1.21, changing the `layer.visible` property of the Google map is not working.

    I am using `<layer url='googlemap.js' />` from Google Map version 1.21. I toggle between the Google map and my custom image map. When switching maps, I use `set()` to change both `layer.visible` and `layer.alpha`.

    The custom image map works fine, but after updating to version 1.21, the Google map disappears and does not display properly.

    After extensive investigation, I discovered the issue. The Google map layer's visibility is not updating correctly even though the `visible` value changes. In other words, even if the map layer's `visible` property is `true`, it does not display but still exists.

    Instead of changing both `layer.visible` and `layer.alpha`, only change `layer.alpha`. Ensure that the layer's `autoalpha` property is set to `true`.

    Although I find `autoalpha` convenient, it can cause bugs, such as disappearing hotspots in krpano version 1.19. However, in version 1.21, I had to use `autoalpha` to fix the Google map layer disappearance issue.


    Hi, klaus thank you for having me reply so fast.

    To make things clear, I prepare a sample code!

    It could be somehow a chrome bug.

    With renderer 'webgl', an interactive area hotspot works fine.

    But when it comes with 'css3d' renderer, it become smaller even if its div size is correct and the parent div is set at the correct size.

    Please have a look at the following urls ;

    1. webgl renderer interactive video -…rtscene=scene_2
    2. css3d renerer -…ene=scene_2_css

    I found this issue when I test applying css filter on krpano div sprite.

    The point of the smaller video with css3d renderer is its parent div is the correct size. but the <video /> element itself is NOT.

    For more information,
    I found on 1.21 version, the css3d video hotspot is just disappeared. Because of that, I tought that the css3d is not supported on normal view of PC, mobile.

    I found on 1.20.11, 1.20.09 versions, the css3d video hotspot is showing but smaller size unexpactedly.

    I'd like to test how to have the video in VR is got affected by css "-webkit-filter".

    For the reason, I have to change the video hotspot into a css3d renderer version.

    Unfortunately, the video disapears. with normal renderer (not mention or webgl, it works properly)

    on 1.20.09 ver, it disappears but the mouse cursor changes when it's hovering on the hotspot.
    on 1.20.11 and 1.21 ver, it disappears. I can NOT see it, and NOT feel it.

    It's not supported or do I have to set some other atrtributes?


    @ Kabkee
    anyway, in any case only the direct caller is accessible! you cant get a higher caller
    thats why the example above hardcodes the callers name inside the callback function
    this way you have the needed information

    Yes. that makes me sense. All about the local scope and callwith you said, I agree with them.
    To make simple the topic of this thread, I brought a new sample code below.

    Today I have a deep thinking time on this, and I got an idea *w00t* *attention* why it is.
    My guess is that It is because "klaus make this so".
    I don't know it's in purpose or not, but please review the blow code.

    Playsound oncomplete, tween donecall works the same.
    All returns "got YOU".

    <action name='anaction'>
    	set(getMyName, 'got YOU');
    	tween(view.hlookat, 90,,,
    		trace(getMyName); // got YOU
    	playsound(narration, get(sound_source[effect_popup].url), false, 1,
    		trace(getMyName); // got YOU

    Playsound oncomplete, tween donecall works differently.

    My Guess,
    1. tween is genuine krpano action and its donecall works remaining in krpano.
    2. playsound is a plugin action which is integrated with howlerJs.
    3. In the code of integration, (maybe) in the listening event callback function don't get any information because the callback function is running in an isolated function which is in static mode.

    What do you think?

    I think. Only Klus can reveal the fact how this possible.
    I'm just curious and this has not been solved clearly for few days :(

    As you called the 'oncomplete' as a "callback", YES I think it's real javascript callback function which could not access other territories, variables.
    Specially, in such a limited environment like krpano javascript type action. (Somehow, it works so in krpano to get intergrated with pure Javascript library - hower js)

    As Hyung mentioned in the thread -…&threadID=19413
    The two different callback - "donecall" and "oncomplte" - look like the same, but work differently.

    Then, could I make the conclusion of this tread?

    Why I made this tread is to get access caller (in local scoped action) in oncomplete(callback function of playsound, Sound Interface).
    However, it's not possible to get the history of callback because of the mechanism or so.

    Related to this thread,
    one thing left question driven from Hyung is that.

    1. HOW donecall of tween and oncomplete of playsound (sound interface) are differently working in Krpano?

    2. WHAT makes donecall of tween and oncomplete of playsound (sound interface) work different in the same situation?

    I'd like to get your opinion or advice to use them correctly with right knowledge.
    Thank you in advance.

    strange.. it works fine here
    proof of concept -->

    Thank you for your example. it works. Yes, I know.
    But ah...

    I got to know that I mistitled this post and I should had to mention the words "oncomplete of playsound - SoundInterface"

    I re-point that
    "I want a way to get caller of local scoped action which called from a hotspot in oncomplete of ""playsound"" action."

    There's no way so far, and i wrote this post.
    AND I'm finding other's opinions, its possibilities, or the exact reason why it is.

    ""I hope that you tried my code which mentioned the beginning.
    specially, have your attention on "playsound" action and in the oncomplete session, you cannot get any caller in there.""

    Thank you for your prompt response.
    and you right mentioned that's why I'm finding a way to get access some variables out of the local scope of playsound's 'oncomplete'.

    I know there's no anaction, no anhotspot in the scope of 'oncomplete', it makes me feel like it's so much isolated from other scopes.
    But, it can access to "global" !!

    The following code works:

    <action name='anaction' scope='local'>
    playsound(narration, get(sound_source[effect_popup].url), false, 1, trace(get(global.callerName)) );

    However, it's not the way what I do NOT want.
    So, here's my solution. make a xml element and using its' attribues like below:

    <some_setting tempcaller='' />
    <action name='anaction' scope='local'>
    playsound(narration, get(sound_source[effect_popup].url), false, 1, trace(some_setting.tempcaller) );

    As you expected, the above codes are work properly.

    Unfortunately, your codes below are not working.

    maybe that works:
    calc(local.callback, "trace("")");
    playsound(_name_, _source_, false, 1, get(callback));

    Maybe.. or somehow, there could be a better solution to get access to caller from oncomplete???
    *whistling* *rolleyes* *confused*

    !! UPDATE !!
    I'm using krpano ver. 1.20.11.

    I don't know exactly when it started 'oncomplete' running differently.
    I think it could be from krpano ver. 1.20 updates which had had replaced its sound interface from HTML5-Audio to webAudio API.
    --- if possible, I'd like to know when it started exactly just for information.

    - this action works as usual : playsound(_name_, _source_, false, 1, oncomplete() );

    But in a local scope action, the 'oncomplte' cannot access caller.
    'caller' is not the caller itself who acually called the action, but trace() shows null.

    <action autorun='onstart'>	callwith(hotspot[anhotspot], anaction);</action>
    <hotspot name='anhotspot' />
    <action name='anaction' scope='local'>	trace(; // anhotspot	playsound(_name_, _source_, false, 1, trace( ); // undefined or null</action>

    in that case, if you needed get the extra information from the caller - the hotspot named 'anhotspot' is NOT possible in 'oncomplete'.

    Yes, in different way, it could be solved problem,
    However, I'd like to know if there's another way to get the action caller in easy way OR it's impossible to be accessed.


    Embedding Pano, with embedpano();

    I implemented onready attribute and all works good.

    However, sometimes I faced the below error when I too fast to call krpano actions before changing black screen to pano just in time (i don't know when exactly)

    Every single time when new pano loading. there are chances.

    VM41313:8 Uncaught TypeError: Cannot read properties of null (reading 'webGL')at Q (eval at B.e.loading (eval at embedpano (tour.js:10:73)), <anonymous>:8:73)at Object.l.callaction (eval at embedpano (tour.js:10:73), <anonymous>:1:92617)at Object.l.processTicks (eval at embedpano (tour.js:10:73), <anonymous>:1:96938)at ff (eval at embedpano (tour.js:10:73), <anonymous>:1:37166)at b (eval at embedpano (tour.js:10:73), <anonymous>:1:348535)

    It seems DOES exist the krpano instance in the code, i think because the pano works well.
    But it shows the error and freeze the screen. When only changing black to new panos (when right just before loading another pano)

    Since that, I have to setTimeout on 'onready' function for wait 0.5 sec for calling the first one of krpano actions.
    But it doesn't help, because it's not just 'instance ready or not' issue.

    Any Idea for this?
    Waiting for your advice. thanks.

    I'm using ;

    - Mac OS Monterey v 12.2.1
    - Chrome Browser Version 99.0.4844.74 (Official Build) (x86_64)

    After testing, I found that the raycaster is reversed due to the value created by camera projection_matrix, but I don’t know anything about projection_matrix

    I only removed minus(-) in which "-mouse_y" in the line of raycatser's ray direction set as like the below, it show the right direction.

    camera_hittest_raycaster.ray.direction.set(mouse_x, mouse_y, 1.0).unproject(camera).normalize();

    but the intersection is not sill working :(
    even it's not directing the correct way with the mouse pointer.

    my test resource is in the link , and can see the live source in the link
    please check them out, and anyone got some ideas, comments, or advices please let me know :)

    Good luck with ThreeJs

    I'd also experienced this when i use everpano naviation plugin.
    For making not this happen, I remove all everpano relative plugins, and add plugins made by Klous in a krpano example.

    I don't know why but i think some where relative axis is different from default ones which made by krpano tools.

    Using Autolock and automatically play the sound, onplay event is not fired at the moment.
    The below doesn't work.

    streamsound(bgm, get(sound_source[bgm].url), true, 1);
    set(sound[bgm].onplay, trace(onplay) );

    After pause and play, the event is fired properly.
    Automatic playing is not firing the event.

    Sometimes when I get the paused attribute, autoplayed sound says it's paused, even if it's playing the sound.

    Which part that I should fix?


    no sorry, transparent multi-resolution panos are generally not possible yet.

    During rendering the tiles from several resolutions can overlap and depending on the used render method/order (depending if a webgl depthbuffer is available) this would result in a 'broken' rendering. Additionally transparent renderings are problematic with the scene blending.

    Best regards,

    I see.
    Thank for your response.

    This question is from putting background image behind Object VR.
    But After some research and reviews from this forum, I don't get any proper answers.

    Please see my further questions.

    Question 1.
    Is it possible to parse (making multi resolution tiles) images in PNG (with transparent background color)?
    Default result format seems to be JPG, it could be impossible to be made PNG files


    Question 2.
    Can I make background color transparent?
    We can set the background color by passing embedpano bgcolor parameter. but impossible to pass transparent.
    It IS working as transparent, but <canvas> which renders VR itself, the background color is set to be black.

    * What it is *

    Level indexstart value has been 1 for default.
    It is always the same from krpano version 1.18 as i know
    However, i confirmed today that it changes the generated levels from ascending to descending.

    In 1.18 version, when making tiles with 12,000 x 6,000 px images,
    Level 1 was high resolution tiles.
    Level 3 was low resolution tiles.

    but now, In 1.20 version, (I don't know exactly from when)
    Level 1 is low resolution tiles.
    Level 3 is high resolution tiles.

    * What Problem is *

    I know and agree that this tile leveling is more natural and intuitive.
    But, I need to reverse order leveling like version 1.18

    * My Questions *

    1. Is there a way to set a level order ascending or descending in krpano Tools Config File?
    2. If possible, can I get the 1.18 version macOs/linux version krpanotools executable files?