First of all, sorry for my English.
I need some kind of assistance with Forge. I need to display the download speed of the BIM model on the Unity.UI, be it the .RVT or whatever is downloaded from BIM360. Is it possible to know where it is downloading exactly to be able to put a count of downloaded bytes there?.
Another question. Currently the download time from Autodesk servers is approximately 110 seconds.
We understand that the download is by meshes packages. Is there a way to speed up this download? Our client needs this download to be faster.
The size (in Mb) depends of the model, so it hard to tell you how large a RVT image could be. It also depends on the asset quality, and what you actually requesting to view. So I am afraid I cannot really answer that question. However, if you are interested to create a progress bar in your UI, you can ask the number of triangles, material definitions, and textures from the model manifest, and calculate the % download from there, depending which technology you are using to access the data. There is an example in the AR|VR toolkit doing this, but again it depends of the technology you are using.
Assuming you are using the AR|VR Toolkit, mesh request are done in parallel, so the speed to download and instantiate meshes depends of your internet bandwidth, and speed of you device to run Unity. In the toolkit, you may accelerate the download, but accept to lose control of the UI during that period. It is a compromise to make due to the Unity limitation running singe threaded.
The toolkit can also convert models to glTF, and you could using the gltfast Unity plugin to get better performances, but lose metadata associated to objects. Another compromise due to the nature of glTF at this time.
Related
is there a Size Limit for Post Scene Job , Models up to 100 MB are loading in Unity, above 100Mb the manifest shows "succsess" but the Model is not loaded in Unity3d.
https://app.swaggerhub.com/apis/cyrillef/forge-ar_kit/2.0.0#/ARKit/assets_create
Did expect that the Post Scene Job works for larger Models(>100MB) too.
https://app.swaggerhub.com/apis/cyrillef/forge-ar_kit/2.0.0#/ARKit/assets_create
I'm not sure if there's a hard-coded size limit (I don't think there is) but due to the way the service is designed, what really matters here is the complexity of the design, not necessarily its file size. For example, you could have a design that's less than 100MB in size but it could contain so many individual design elements that trying to load it into Unity would take forever.
Btw if you're interested in bringing Forge designs to Unity, I would suggest that you look at an alternative approach - using the forge-convert-utils library to convert Forge models into glTF, optimize the glTF using something like gltfpack, and load it into Unity using something like glTFast. There's also a lightning talk video I recorded for Autodesk University 2022 where I explain this process in a bit more detail: https://www.youtube.com/watch?v=qBNF42Ykajo.
After showing the house to the forge viewer using a Ravit file, the user wants to modify the contents of the viewer and receive it as a Ravit file again. What function should I use to implement the above?
https://learnforge.autodesk.io/#/
I referred to it.
my project
I make input data and transfer this to design automation and get output file and file to translate viewer (this is 2 minutes).
This process is very slow I want better then this process.
https://www.autodesk.com/autodesk-university/class/Its-Not-Too-Late-Automate-Using-Forge-Design-Automation-Inventor-2021#video
This video looks very fast on work process. How to get fast work process like this video?
Thank you
The Forge Viewer is a viewer, not an editor.
The Forge viewer displays the translated version of a seed CAD model, in this case, a Revit RVT BIM.
You cannot edit or modify the CAD seed file in the viewer.
To achieve such a modification, you have to either use the original modelling software, in this case, Revit on the Windows desktop, or you can use the Forge Design Automation API for Revit.
That is what was used to create the Inventor sample you refer to.
Oops... re-reading your question, I see that you are already using design automation yourself as well. Congratulations on that.
However, there is no guarantee on the turn-around time for this process. The video may very well have been edited to eliminate a waiting period, of the user creating the video may just have been very lucky to achieve a faster turn-around time.
I am checking for you with the Forge team whether they used any additional tricks to speed things up in the video or in the true real-time processing. They confirm:
For Revit, a basic DA job should take up to 30-40 secs for the processing time alone. The derivative job for translation to viewer format could take another minute. So, 2 mins is expected. The sketch it demo video has a timer on the side to indicate real time.
I've an embedded system which runs firmware and has USB mass storage with size 79kB. So when you plug in the device to any computer(MAC/Windows), it pops as a 79kB flash drive. The firmware creates files which has transaction records. The objective is to display these transactions (tables and simple graphs) to the user. I've narrowed down to a web browser. So the user (with MAC/Windows PC) can plug in the USB device mass storage and open an HTML file in the mass storage drive and view all the transactions in the form of tables and simple bar graphs. The tricky part comes here: the device(firmware) needs to update it's clock, and this time input has to be sourced from the MAC/Windows PC. How can this be achieved?
This is the minimum requirement. Further, through the web browser the user wants to write some configuration parameters for e.g. through a text box and a submit button in the HTML page.
NOTE: Here the device has USB mass storage type and the web browser approach were selected so that there is no prerequisites for the user.
Please suggest an alternative if this can be done using another approach for e.g. a different class of USB or some other application locally available on MAC/Windows desktop/laptop. For e.g. the application should run on both on Mac and Windows i.e. the code should be the same but can be built into separate packages one for Mac and the other (.exe) for Windows. Please suggest a platform for this that has same source but can be built for both mac and windows. Thanks!
As far as I know, there is no way a web browser could write to a file. If such a thing was possible, it would be a huge security issue.
You have to write a piece of native software to do all the tasks you name. That can be done in pretty much any programming language, and if you're developing embedded systems I reckon you must have some experience in programming.
I'm looking at doing something similar and have an idea, though you may be better equipped to run with it than I am. Have the define contain a directory called "SET_DATE" with files "YEAR15" through "YEAR99", "MON01" through "MON12", "DATE01" through "DATE31", "H00" through "H23", "M00" through "M59", "S00" through "S59", and "SET"; each such file should start at a different sector, though none of the sectors in question need to contain any data (they need not physically be stored anywhere). To set the date to July 4, 2020 at 12:34:56pm, read the following files in sequence:
SET_DATE/YEAR20
SET_DATE/MONTH07
SET_DATE/DATE04
SET_DATE/H12
SET_DATE/M34
SET_DATE/S56
SET_DATE/SET
The last access should cause the unit to set its clock. If a user might want to set the clock more than once, that could be accommodated by either having a bunch of essentially-identical directories under SET_DATE (so setting the date the first time would use SET_DATE/00/YEAR20, the second time SET_DATE/01/YEAR20, etc.) and/or having the drive unmount/remount itself if necessary to clear out any caching.
I would think it unwise to have directory fetches trigger actions, since Windows or an anti-virus tool might decide to pre-cache all the directories in a drive when it is mounted. I would not expect Windows or a browser to eagerly load files, however, so I would think one could have read accesses trigger actions.
I'm working on an google map application that uses a geojson file that stores the ZCTA (Zip Code Tabulation Areas) of states. These files are fairly large and take some time to load so I was trying to find ways to reduce the loading time of the geoJson file.
I have looked at this question here:
Is there a memory efficient and fast way to load big json files in python?
so I am aware that reducing the loading time isn't easy to do.
but I came across this link that quickly loads ZCTA:
http://www.trulia.com/home_prices/
So my question is this: What has the developer done on this site to quickly load the ZCTA data? Can anyone see offhand how it was done?
You are basically asking, "how do I write the user interface for a GIS that will offer high performance?"
The developer of this website is not storing this information in a JSON and then loading it each time in response to each user's clicks. The developer is probably storing all of these objects in memory. To make things even faster, the developer has probably created the various KML files for the Google map in advance. The developer may be interfacing directly with Google, or may be using a commercial GIS that has an output format that employs Google Maps.
For example, you might check out https://gis.stackexchange.com/questions/190709/arcgis-to-google-maps.
I need an offline caching system where my app can store about 0.5 MB of data. It is preferred that there is no interaction required by the user, but small amount of user interaction might be acceptable
Currently, Microsoft's Silverlight is being used to store data offline. It is a large download for the plugin, and not installed as standard on most machines.
I have been considering cookies - but they are far too volatile. I can imagine numerous reasons someone might clear their browser cache and lose all their data.
I am not sure about HTML 5 storage, and how volatile it is in practice.
I have been looking into flash, which is installed on over 97% of windows computers. It seems I can load data from a user selected file, and save data to a user selected file.
My questions...
How big is the microsoft silverlight plugin download (in MB) for windows? (I think about 8mb, but did not get clear answer from the internet)
How can users accidentally (or deliberately without realizing the consequence) clear their HTML 5 storage on common browsers?
Is there a way to get flash to store or load data from local files without user interaction?
Is there another alternative I have not considered?
Well you could use Flash shared Object storage, which will allow between 0 and unlimited space. Check this settings panel for details of your own settings to get a better idea of what I mean.
http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager03.html
Of course this does mean that the user will have to allow third party flash content to be stored locally, which is the default. Also the default storage space is 100KB, with the user being prompted to allow for a larger amount unless they have previously increased the default themselves. So that's a small draw back, but still workable.
I am not sure how you would access the shared object from within a silverlight app, as I have only used it via a Flash swf. I will do some digging around using javascript and get back to you on that.
Also there is another post that may help you:
Javascript bridge to Flash to store SO "cookies" within flash
It sounds like what you need is isolated storage.
I use it with all my silverlight apps and it couldn't be easier to use. With only a few calls you can store and retrieve data programatically.
Edit: I was thinking that your app is already programmed in Silverlight. What is your app programmed in? Is it simply HTML/CSS at the moment?