3d exhibition simulations

3d exhibition simulations
start in 18 sep 2020
*** model size : 220kb generated by GeometryBuilder


fast server : http://gb2.5kb.me/hall44.html


It does not load. It seems that some resource have a 404 not found :

Failed to load resource: net::ERR_BLOCKED_BY_CLIENT
VM77:1 WebGL: INVALID_ENUM: getParameter: invalid parameter name
VM77:1 BJS - [13:43:09]: Error while trying to load image: http://virtual.iranjobex.com/3dm_images/ads1.jpg
ailed to load resource: the server responded with a status of 404 (Not Found)

1 Like

i upload that on german server http://gb2.5kb.me/hall44.html
please check it too

Same thing. It still does not work.
Resources are missing that are not loaded and block the page loading

It loads fine for me, check in other browser, or maybe your network is blocking.

Ok, this only works with Firefox.

I have tried Chrome and Opera and it doesn’t load.

1 Like

it is work for me in all it is nice to know what happen in your pc :slight_smile:

1 Like

OMG this is super cool! @PirateJC will want to see it for sure

It is a bit slow here due to network but it is worth waiting for it to load!

Congrats @nasimiasl!!

1 Like

thanks DK
it is uncompleted yet that finish in next week

@nasimiasl - This is awesome! What a fantastic way to give people an idea of how spaces will be laid out. I also really love the mechanic of how you automatically animate the user up and down the stairs! Very very cool!

When you’re done, ping me on this thread and I’ll be happy to add this to our demo page!

I would also love to put this into consideration for our next release video if you’re ok with it?

1 Like

it is ok will send you next week the complete version

also i use a walk way for mobile i like know is that useful or not
thanks from all for test and help me for make it better

@Deltakosh i need some help in this project i make topic for that a few day ago

please look thanks

how are you loading the assets while person moving…

i have limited assets (50 number like stand and frame and …) i have panel for attach and design then i collect all point of the object in scene
and when person be close in special distance i generate that model
in this technic i build all model in GeometryBuilder

so that let me generate any model in less than 100 ms
so i just detect point and update mesh to new Mesh

also agent can change stand contents dynamically

we most finish it in this week :slight_smile: after that i share what i have

what you say GemoetryBuilder you mean this ? Extensions/GeometryBuilder at master · BabylonJS/Extensions · GitHub

I am very interested to know how you are achieving it. I have similar situation where I am trying to figure this out.

@PirateJC hi


about how i control loading

i make list of points in scene and group it by number

then make mesh as parent for each group

and make system for detect closest Point in the correct direction

and take 2 closet point and show them

// points sample

scene.partPoints = [
{ p: 1, x: -331.50 y: 20.5 , z: -79.8 },
{ p: 2, x: -333.378 y: 20.57 , z: -134.890 },
{ p: 2, x: -304.894 y: 20.57 , z: -162.609 },
{ p: 3, x: -261.6575 , y: 20.57 , z: -164.46 },
{ p: 4, x: -331.31 , y: 20.5 , z: 38.23 }, …

// detect algorithm

var calcWalkCameraWatched = function () {

var ps = {
    x: scene.walkCamera.position.x,
    y: scene.walkCamera.position.y,
    z: scene.walkCamera.position.z

var ds = {
    x: scene.walkCamera.position.x-scene.walkCamera._currentTarget.x,
    y: scene.walkCamera.position.y-scene.walkCamera._currentTarget.y,
    z: scene.walkCamera.position.z-scene.walkCamera._currentTarget.z

var di = norm(ds);
var l =  8;

var pts = [
    { x: ps.x - di.x * l*1., y:  ps.y, z: ps.z - di.z * l*1. },
    { x: ps.x - di.x * l*2., y:  ps.y, z: ps.z - di.z * l*2. },
    { x: ps.x - di.x * l*4., y:  ps.y, z: ps.z - di.z * l*4. },
    { x: ps.x - di.x * l*6., y:  ps.y, z: ps.z - di.z * l*6. }  
var iParts = [];

for (var i = 0; i < 50; i++) {
    iParts[i] = 0;

for (var i = 0; i < scene.partPoints.length; i++) {
    if (dim(scene.partPoints[i], pts[0]) < 20.) iParts[scene.partPoints[i].p]++;
    if (dim(scene.partPoints[i], pts[1]) < 30.) iParts[scene.partPoints[i].p]++;
    if (dim(scene.partPoints[i], pts[2]) < 40.) iParts[scene.partPoints[i].p]++;
    if (dim(scene.partPoints[i], pts[3]) < 50.) iParts[scene.partPoints[i].p]++;

var max1 = 0;
var max2 = 0;
var max1i = 0;
var max2i = 0;

for (var i = 0; i < iParts.length; i++) {
    if (max1 < iParts[i]) {
        max2 = max1;
        max1 = iParts[i]; 

        max2i = max1i;
        max1i = i; 


return [max1i,max2i];