A: Many 3D Objects from Sketchfab are published with uncompressed PNG images. There are optimized for rendering and not for real-time rendering.
To optimize textures for web applications, we recommend a size of 1024×1024 in JPG format (80% compressed).
An easy way is to download the 1k GLB file and upload it to your FTP server.
A better was is to download the GLB (glTF) file first and import the object into a clean Blender scene. Then export the glTF file and set the materials to JPG and 80% compression. That reduce the file size to 30%. You can save your best setting as presets in Blender.
Compress the new glTF files and the texture folder into a zip-archive.
Screenshot of blender settings.
A: Go to Primative Objects and select the Action Object
It is recommended that any object you are planning to use it near or ontop of, just turn off the Collider using the removeCollider sObjectName code.
With the ActionObject positioned, simply open the MiniScript and enter the following:
fYOffset,fYRotation,nAnimationID
Ex. 2.3,90,12
Save and Test
A: Place video or voice zones down. In the MINI-SCRIPT portion, make sure to put the following comma-delimited code:
VideoZone Objects =>
sVoiceZoneName, bTriggerExitAllowed
VoiceZone Objects =>
sVoiceZoneName
Ex.
VideoZoneA, true (This will create a video zone that turns on the video call for 1:1 video and will disconnect when the actual player hits the end button).
OR
VideoZoneB, false (This will create a video zone that turns on the video call for 1:1 video and does not disconnect until the actual player hits the end button).
OR
VoiceZoneA
A: networkCommand allows you to send a command to ALL users. This is great to move objects (Such as making a virtual elevator or a door) or to change a texture (Imagine a virtual Product Configuration system, etc.). There are currently 4 networkCommands and beyond come out.
Backend =>
Example Items:
networkCommand “ObjectName”, “moveObject”, “fX,fY,fZ,fSpeed”
networkCommand “ObjectName”, “scaleObject”, “fX,fY,fZ,fSpeed”
networkCommand “ObjectName”, “rotateObject”, “fX,fY,fZ,fSpeed”
networkCommand “ObjectName”, “changeTexture”, “sTextureURL”
A:
Backend =>
— Go into the Backend and choose the Admin Object
— In the MiniScript section, type in the following:
sCommaDelimitedListOfAdminUsers%sRGBOfAmbientLightInSceneOutOf255%fFarClipPlaneDistance
Example: nav,billy,joe%128,128,128%100
NOTE: Ambient Light, make sure the values for RGB are INT values between 0-255.
This would make nav, billy and joe admins of the plot and would set the Ambient light to a gray color. Adjusting the ambient lighting allows for some unique visuals. The last item is the far clip plane. Adjusting this will allow for more optimization, however you will not see the entire scene. 1000 is the default value for far distance, however keeping it lower will allow for more optimized speeds.
A:
Backend =>
— Go into the Backend and setup any START object (Like a cube or anything else)
-Create another object with a name for it that will become the TARGET location the user will teleport to
— In the MiniScript section, type in the following:
localJump “NameOfObject”
-Save the objects and the plot and now go and test.
A:
Backend =>
— Go into the Backend and add the plot clone object from the enterprise list
-in the obj props, type in the total number of users before a new clone is made
-Make sure the following objects are also in the scene, or plot clone tech won’t work:
-Plot Custom Screen (And make sure there is some URL for an image or video)
NOTE: Without the above, plot clones won’t work. The reason for the custom screens/images is so you’ll be able to know that the plot is a clonable plot. You can use any image or video you wish to put for the custom plot screen as long as its a url to a jpg or mp4 file in your my-content folder
A:
Backend =>
— Simply add in any object or GLB file you want to act as your NPC and give it a NAME
– Create as many trigger items as you would like and in each trigger item (Could be invisible boxes or other trigger zones) you need to add in the following MiniScript code to make it work
CODE:
makeNPC sObject, fYOffset, fShowTime, sGPTRole, sMsg1, sMsg2, sMsg3, sMsg4, sMsg5, sRandomOrSequential, sSFXorNone, sGPTEnabled, sObjectWithMiniscriptToRunAfter, sTurnToPlayer
Example: makeNPC “bot1″,1.50,3.0,”You are a bot that helps users”,”Hi there!”, “Hello”, “Nice to meet you!”,”This is my first test”, “Welcome to the metaverse!”, “random”,”6″,”false”,””,”true”
The above code would create a messagebox above the object called bot1 at 1.50 units above that object. The message would last a total of 3 seconds and this is a NON-GPT enabled bot so the sGPTRole is not used. The 5 messages would be randomized and each time sound effect 7 (Which is 6 in the code above as sound effects start at 0) would be played. The TURN command is true so this NPC object would turn towards the player upon activation.
A:
Backend =>
— Go into the Backend and choose the zPro_PlotPassword Object
— In the MiniScript section, type in a password with no spaces (Only those with the password will be able to access the experience)
Frontend =>
-The specific plot will have a password that the user must enter to be able to access the experience.
A:
Backend =>
— Go into the Backend and choose the zPro_PlotCustomLoginScreen Object
— In the MiniScript section type in a url without quotes for either a jpg or mp4 file.
Frontend =>
The plot will load this new custom image or video 1 second after loading the SITE wide one. If you want ALL plots to always have their own, then simply leave the site-wide one empty in the backend Settings.
A:
Backend =>
-Go into the Backend and make sure the enterprise Ambient Audio object is in the scene
-Lay down any cubes that you want to have as ambient zones and set their color to #FFFFFF00 for transparency and scale them the distance you plan to have ambient zones (The centre will become the loudest area if you have 3D sounds enabled, otherwise the sound will play the moment a user enters the trigger of the zone).
-Set the object type as TriggerEnter
-Give the object a NAME for the GameObject
-In the MiniScript code section, select TriggerEnter and enter the following:
playAmbientAudio sObjectName, sMP3URL, sLooping, f3DRangeNegativeOneIs2D, fVolume
Example: playAmbientAudio “AmZone1”, “https://www.domain.com/your_audio.mp3”, “true”, 10.0, 1.0
This would look for an object called AmZone1 and would play the mp3 you indicated on loop with 10 units distance audio fade using 3D spatial audio at full volume.
A:
Backend =>
-Go into the Backend and choose any plot of land from the Plots menu
— In your scene, make sure to have an Admin Object (Red) and a Presentation Object (Orange) sitting somewhere in the scene. These objects are colored differently, so you know what they look like. You can hide them behind a wall, or anywhere you wish, as long as they are in the scene somewhere.
— Next, create as many screens as you want by using primitive objects and then naming them Screen*** where *** stands for any alphanumeric characters.
— Make sure your Admin Object has a list of comma-delimited usernames in its MiniScript code area that will be marked as admin users for the plot. These are the ONLY users who will be able to use the screens, and also will be the ones who designate who else in a plot can use a screen as well.
— Once done, save the scene and now your scene is ready to allow for screen sharing
Frontend =>
— Log into the frontend plot using one of the admin names from the Admin Object
— Upon detection, you should see the screen controls showing up in the front. If you are NOT an admin user, then please ask the admin user in the plot to get access to screen share controls. ONLY an admin user of the plot who has been setup in the backend can give screenshare control access to other users.
— Now click on the SETTINGS Gear icon at the bottom right of your screen to see the slides setup window. Select the screens you want to share on using checkboxes.
— Now paste in your COMMA DELIMITED list of slides (JPG or MP4 Videos only). Please NOTE: CORS Policy will probably block images and video files, thus it is recommended to keep all required slides in the my-content folder or access from websites that have an open CORS policy.
— Once you hit the green CONFIRM button your first slide should appear, and you can now use the buttons to control (Reset, Back, Play/Pause, Forward). You can also use the keyboard HOT KEYS J, K and L where J = Back, K = Play/Pause and L = Forward
A:
Backend =>
— First, make sure that the zPro_AudioMain object is in the scene
— Now on any object you can add the following MiniScript items:
playAudio sMP3URL, sLooping, fVolume
playVideo sObjectName, sMP4URL, sLooping, fVolume
sMP3URL or sMP4URL = https URL to any mp3 or mp4 file
sLooping = “loop” or “false”
fVolume is a value from 0.0 to 1.0 where 1.0 = 100% volume
— We recommend you use a cube for videos, however any object should work fine
— When playing audio, you can use it in conjunction with playAmbientAudio (Enterprise) to add even more realism
NOTE: playAudio and playVideo are LOCAL commands. This means that each user will experience them on their own end. When they pause/play video, for example, no one else will know or see that pause/play. If you want everyone else to see what is going on, it is recommended to use a slideshow or presentation system instead.
A:
Backend =>
— Go into the Backend and make sure you have an Admin Object
— Place a Jukebox in the scene anywhere you want
— In the MiniScript code section, add code as follows:
loop_true_false, fStartVolume, f3DRangeNegativeOneIs2D%ListOfMP3CommaDelimited%ListOfTrackNamesCommaDelimited
NOTE: Make sure the % signs are in the string!!
Broken down, it should look like this:
loop_true_false,
fStartVolume,
f3DRangeNegativeOneIs2D
%
ListOfMP3CommaDelimited
%
ListOfTrackNamesCommaDelimited
Where:
loop_true_false – should be true to repeat the entire set of audio once the final mp3 is completed.
fStartVolume – is the volume you want to start the Jukebox audio at, where 1.0 is maximum volume
f3DRangeNegatoveOneIs2D – If you put a negative number, then the sound is 2D and is heard PLOT WIDE. If you put a positive number, the sound will become 3D and will have a linear falloff of the positive amount. For example, if you have an ocean area and want to hear ocean waves at around 20 units, then you would put 20.0 for this value and as the user approaches the sound will get louder and louder starting from 20 units away.
ListOfMP3CommaDelimited – A list of mp3 audio files to play that is comma delimited
ListOfTrackNamesCommaDelimited – A list of Track names for the mp3 audio files that will show up on the Jukebox, also comma delimited
Frontend =>
— Log into the frontend plot using one of the admin names from the Admin Object
— Upon detection, you should see the screen controls showing up on ALL Jukebox Audio Objects. ONLY an admin users of the plot who have been setup in the backend can use jukebox controls to play audio via Jukebox
A:
At the end of a URL put the following command &posdata=fX,fY,fZ,fYRot
Example: https://metaverse.xrpress.org/index.php?plot_id=sportcenter&posdata=39.0,5.7,-23.8,0.0
A:
To animate a GLB object, have a look at how many animations comes with the objects. If your objects are from Sketchfab and the types are mostly identified with ID 1 or 2 depends on how many animations comes with the object.
aniObject “MyObject”, “2”, “loop”, 1.0
A:
You can choose between three light objects, directional light, point light and spotlight
Backend =>
Script Example:
setLightObject “Light1” , “#fff8f0” , 0.8 , “soft” , 0.8