OverviewThis experimental application enables you try the quick-mesh procedural modelling kernel safely directly in your browser - without having to install additional software. You can use this application to evaluate the qmsh grammar - in particular for an indicative taste of what it is like to script 3D polyhedral entities with quick-mesh. You can also use this application to edit your procedural entity scripts when you are away from you main machine or device - for example when using a public computer.
Vitally though: be aware that this is a heavily simplified interface and in many ways a less powerful IDE relative to its native counterparts. Specifically there are a multitude of features exposed by the QMSH-Editor, QMSH-Kernel and QMSH-Entity-Inspector that are not present in this sandbox. For example (and most crucially) this application operates in a non-persistent manner - meaning that it (purposefully) does not save editing-session state between page reloads. Furthermore this sandboxed application does not expose a means to export the various 3D interchange file formats supported by the native applications. Essentially remember throughout that this experimental tool is not designed (nor intended) to be a production-ready replacement for the QMSH-Editor nor the QMSH-Kernel. It is simply a proof-of-concept (demonstrating running QMSH client-side in a browser) that might be helpful to prospective mesh-makers.
Note: this application requires a Javascript enabled browser in order to function. If Javascript is disabled by default in your browser this page will simply not function. For example if you are unable to dismiss this landing/info-page (using the escape key or the top-right proceed-button) then it indicates that Javascript may not be fully functioning. To resolve this head to your browser's settings - enable Javascript and then reload this page.
Note: this application requires a browser that supports Web-Assembly in order to coordinate script parsing and 3D-mesh assembly. If you are unable to run the built-in example scripts then it indicates that Web-Assembly may not be supported by your browser or that one or more security settings may be preventing the execution of Web-Assembly in your browser. To resolve this you may have to update your browser or alter the corresponding setting(s) - or open this page using an alternative browser that does support Web-Assembly.
Note: this application requires a browser that supports Web-GL in order to render 3D-mesh. If you are unable to view 3D entities in the right-hand preview canvas - then it indicates that Web-GL may not be supported by your browser. If this is the case you can apply the same trouble-shooting steps (applicable to Web-Assembly support) to resolve Web-GL support - i.e. check that your browser's current security settings allow Web-GL content and/or try an alternative browser. Additionally - be aware that for older browsers that support Web-GL experimentally - an experimental flag (!) is displayed in the canvas' lower-right-hand corner to indicate partial Web-GL support.
Pro-Tip: you can side-step the non-persistent nature of this application by using it alongside a native text-editor. For example: rather than editing your scripts directly inline - you could instead edit them externally using emacs, vim, nano, atom, notepad++, gedit, or
<insert-your-favourite-editor-here> - and then simply copy and paste the source into this sandbox to assemble. Incidentally this is often how this application is used internally at Codemine. In particular it can sometimes be quite handy (i.e. for script performance profiling and optimisation tasks) to have multiple versions of an assembly running in separate disposable/throw-away/quick-use sandboxes. This can also be useful for quickly benchmarking the performance of your scripts (especially when realtime assembly in interactive applications is the aim) across a wide range of devices without installation and setup requirements. Note: if you use this sandbox alongside an editor that supports syntax-highlighting - you can select C, C++ or Java language-settings to deal with most parts of the QMSH grammar.
Known-Issues & LimitationsThis sections lists the known issues and technical limitations of this sandboxed-editor.
- Blocking-Assembly → The web-assembly build's assembly of mesh is currently implemented as a blocking process (as opposed to a threaded/non-blocking process as the mobile-editor). This means that whenever you assemble an entity the application will block input events and display-rendering updates until the assembly is complete. This behaviour is typically imperceptible for smaller assemblies but may cause your browser to display the unresponsive-script warning/error dialog for larger assemblies. Note: if you find this unacceptable - you are advised to instead use one of the native quick-mesh applications.
- contenteditable="true" → The editor's use of the HTML attribute contenteditable="true" can result in some undesirable/ghastly usability artefacts when copying and pasting source code on some desktop browsers with either the keyboard-shortcuts [ctrl-C,ctrl-X,ctrl-V,cmd-C,cmd-X,cmd-V] or the mouse-right-click context-menu actions. These issues stem from the manner in which syntax-highlighting is presently handled. Note: there is a tentative plan in place to overhaul the script-editing component and replace the current basic implementation with a more capable dedicated grammar-centric custom component - similar in vein to the mobile-editor's. However the time-frame for adding such is yet to be defined. For now: take care when editing and try to avoid working on larger scripts without having a backup somewhere. For example even a plain-text copy of a script in a native text-editor can be incredibly useful in reducing the risk of loss of data and the scope of editing annoyances.
- WASM-Execution-Overhead → The web-assembly build's generated by emscripten are subject to a roughly 1.5x - 2.0x factor increase in script execution times relative to native execution on the same machine or device. Note: the variance in this runtime overhead is driven by factors such as the hardware used and the operating-system and/or browser used. This is to an extent understandable given the near-but-not-quite-native nature of WASM. Be aware that this overhead is much, much, much larger for the backward-compatible legacy-fallback Javascript build. The simplest way to avoid this overhead is to instead opt for one of the native quick-mesh implementations such as the mobile-editor or command-line kernel.
- Inconsistent Browser 'CMD+R' Handling → The editor attempts to prevent accidental page refreshing (in order to limit data-loss) by listening for the CTRL+R and CMD+R keyboard shortcuts. However certain browsers (such as some versions of Safari) do not allow one to override the default behaviour (for the CMD+R key-combination) and as such fail to correctly handle this particular application-specific customisation. In plain terms be careful using the CMD+R keyboard shortcut on such browsers as it will lead to the immediate loss of script and mesh data. Note: Mozilla's Firefox is a commonly used browser that correctly handles the app-specific override for the CMD+R keyboard shortcut.
Contact & Technical-SupportIf you have any questions or if you need any help or assistance getting to grips with this sandboxed-editor or with the scripting-language do not hesitate to get in touch. Remember that quick-mesh is in the beta testing phase of development - therefore your feedback has a direct impact on the shape of development and the direction the grammar and kernel take.
For technical assistance contact: support@qmsh.org
For general enquiries contact: info@qmsh.org