Release notes for each V4 beta release are gathered here.
V4 is a major rewrite with changes on many levels so please be on the lookout for any bugs.
The main new functionality is that MoI is now a 64-bit program for both Windows and Mac and the Mac version is a native build and doesn't use Wineskin anymore.
New system requirements are Windows 7/8/10 64-bit or macOS 10.8 - 10.13 .
Polygon conversion can now use all your system memory instead of running into 32-bit memory limits.
A lot of various little quirky things should be tuned up for the Mac version.
The only known areas still not quite working yet are snap text labels and dotted/dashed line styles in viewports and Mac trackpad gestures aren't fully functional yet.
Fix for the frozen UI bug when restoring a maximized main window from a minimized or hidden state. Please let me know if you see it again.
Fix Mac deployment issue that was preventing things from working on OS X 10.8 and 10.9, MoI should run ok there now.
Fix font name bug where MoI V4 would overwrite the UI font name property that V3 uses in moi.ini and so the V3 UI font changed after you ran V4. They should now stay separate.
Fix bug where dropdown controls in commands wouldn't reinitialize to their last used value. Reported by bemfarmer in the forum here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8675.204
Fix construction line snapping bug reported in the forum by Moujiik here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8675.119
Not a whole lot of changes, normally I would have waited until a bit more were batched up but the frozen UI bug was pretty significant so I wanted to try and nail that one down soon.
Saving to IGES and STEP files - fixed a bug where using .stp or .igs file extensions wasn't working on Mac.
Mac full screen mode - fix for the problem where the view controls window would show on the desktop space, sending you back to the desktop the first time you moved the mouse over a viewport after going to full screen. Please let me know if you see it again.
Updated shortcut key editor - Make the "Key" column expand to whatever width is necessary to show the longest key combo. Fixes problem reported in the forum by Metin here: http://moi3d.com/forum/messages.php?webtag=MOI&msg=8682.42
Viewport toolbar - fixed a bug where doing view manipulation using the bottom viewport toolbar could miss the mouse up event and get stuck.
Orientation picker - fixed a sporadic drawing bug with the orientation picker reported on the forum by Max here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8682.16
Shortcut keys with Shift - Fixed a bug in shortcut keys using shift + number keys. V4 was generating Shift+1 as Shift+! which was incompatible with V3, V3 would convert it back to Shift+1 which was then not recognized by V4. V4 should now generate Shift+1 for that key combination and not Shift+! anymore. Fixes a bug reported on the forum by Marco here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8682.50
Background images - Fixed a crash when making a background image from a bitmap file with lower than 32-bit color depth. Reported on the forum by Vladimir here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8682.100
Undo - Fixed a bug where undo wouldn't find the proper object to restore in some cases. Reported on the forum by Val here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8682.83
moi.geometryDatabase.findStyle() - fixed a bug in the findStyle() function for the "create if not found" case, reported on the forum by Max here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8682.16
obj.getBoundingBox() - The boolean parameter for getting high accuracy bounds was marked as required in v4, while in v3 it was optional with a default of false. Updated v4 to match v3.
moi.filesystem.openFileStream - switch to use QTextStream for reading to get better unicode support. Unicode files with byte order marks should be supported now, the default will be UTF-8 if no byte order mark is found. Also added new methods .setWriteBOM( boolean ) which you can call to make writing a text file write the byte order mark at the front (default is no BOM), and .setCodec( name ) to have specific control over what encoding to use for reading or writing. Supported codecs are listed here: http://doc.qt.io/qt-5/qtextcodec.html#details .
moi://appdata/ - add support for moi://appdata/ URLs so you can load HTML resources like images from the MoI app data directory. moi://appdata/ will resolve to %AppData%\Moi on Windows and to ~/Library/Application Support/Moi on Mac.
String to integer conversion - Updated so a string value of "1.0" will be successfully converted to an integer value of 1 rather than rejecting it. Fixes a change in behavior from v3 to v4 that broke some of Brian's scripts.
factory.setValue() - switched to v3 behavior so sending the wrong object type doesn't trigger an exception. Fixes the SpurGearProfile script.
Bug fixes and changes:
Mac full screen mode - getting sent back to the desktop the first time you moved the mouse over each viewport after going to full screen mode should be finally fixed! Also Ctrl+Cmd+F shortcut key for full screen toggle should now work.
Mac trackpad and Magic Mouse - Finished implementing multitouch view navigation for the trackpad and Magic Mouse on Mac. Magic Mouse should be back to zooming instead of panning. The Zoom speed can be adjusted in moi.ini [MultiTouch] MagicMouseZoomSpeed=1.0 . Change this to something like 2.0 to make the default behavior faster or 0.5 to go slower. You can also hold down the Ctrl key to go slower as well.
Mac ignored mouse bug - Fix for bug where mousemove events would stop working in certain conditions when restoring the main window from hidden or showing a modal dialog. Fixes bug reported by Finema here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8675.189
Updated "On" object snap mechanics - Changed the way On object snap for curves works to get better accuracy with curves far from the origin.
Incorrect default values for some commands - Fixed a bug where the default values for the Text and Rebuild commands were incorrect on locales that use commas for the decimal separator. Reported by Vladimir on the forum here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8704.32
Trim - fixed a bug in the Edit > Trim command where if an object was set to be both an object to be trimmed as well as a cutting object it could get hidden unexpectedly.
Command button highlighting - Fix for command buttons remaining highlighted after command ends. Reported by Vladimir on the forum here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8704.32
Read-only file handling - Fix bug where using File > Save wasn't prompting for a new file name when the current opened file was set to read-only. Reported in the forum by mhasse here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8714.1
Crash fix for newer CPU/Older OS combination - Fix for 0xc000001d illegal instruction exception when running on Win7 SP0 with a newer AVX-capable CPU.
Hidden-line generation - Increase Canvas megapixel size limit from 175 to 1000.
Degenerate box error - fixed bug where a script error would be displayed if you made a degenerate rectangle in any of the Draw solid > Box commands.
Update text input fields - Text input fields were only applying typed in values when the input panel was open, or when the Enter or Tab keys were pressed, not if just clicking outside the field as they now will. Should fix a PDF export dialog bug reported by reported by Moujiik here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8704.15
viewport.setCameraAndTarget() - Fixed bug in viewport.setCameraAndTarget() function, reported in the forum by Ralf here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8704.25
Process memory use limit - Added option in moi.ini for limiting maximum memory use - Windows only. Can be set in moi.ini under [Settings] MaxProcessMemoryUse=x . Requested by Burr on the forum here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8704.26
moi.view.screenshot - Fix bug where the moi.view.screenshot() method was capturing the wrong area of the screen on Mac.
Enable setting default values for controls from shortcut keys. UI controls can now be triggered or initialized with custom values if the control's id is supplied in the command-line parameters for the command. For buttons, the presence of the button's id value in command line parameters will trigger a UI event for the button the first time that it is shown, this will have the same effect as clicking the button. For dropdowns and checkboxes, the presence of the control's id in an id=value pair will use that value to initialize the control rather than taking the last used or default value as normal.
This makes it possible to set up shortcut keys that package up different options within commands, for example:
Trim addtrimpoints removekeepmode=keep
Trim addtrimpoints removekeepmode=remove
Trim isocurve isodir=u
Trim isocurve isodir=v
Text labels inside viewports still not implemented yet, that's the last remaining thing still left to get v4 fully caught up.
Bug fixes and changes:
Dashed/Dotted line styles implemented so things like the grid, construction lines, and hidden line display should be looking proper now.
Appdata commands folder - MoI will now look for commands in a "commands" subfolder under appdata in addition to the regular commands folder. On Windows this is located at C:\Users\<username>\AppData\Roaming\Moi\commands, on Mac it's /Users/<username>/Library/Application Support/Moi/commands . Note that on Mac the user Library folder is hidden by default, you can use the Cmd Shift . [period] shortcut while in a Finder window to show it for that Finder session. This will be the new recommended place to install plug-in commands, if you put them here then you won't have to copy them anywhere when new betas are released.
DXF import layers - Support reading layers in the DXF file as Styles in MoI.
DXF export layer names - Make layer names in DXF files encoded as AutoCAD is expecting for an AutoCAD 2000 DXF file. By default names will be written using Windows-1252 encoding, with unicode characters escaped. Fixes crashes in AutoCAD when opening a DXF file exported from MoI with layer names using non-ascii characters. It is possible to override this and use UTF-8 encoding for reading or writing names by settings in moi.ini: [DXF Import] ReadNamesAsUTF8=y and [DXF Export] WriteNamesAsUTF8=y
Alt/Cmd Shortcut keys Mac - Fix bug where Cmd+ keys were getting converted into Alt+ keys when written out in v4, and also that Alt+ keys were converted to Cmd+ keys in the moi.ini file by V3 if V3 was opened. Shortcut keys on the v4 Mac version are now written to a separate [Shortcut Keys Mac] section in moi.ini to avoid the conflict with V3.
Extrude responsiveness Mac - Rework communication with worker process to fix problem where some commands like Extrude were not as responsive as V3 especially on Mac.
Window resizing Mac - Fixes for flickering that was happening when turning browser pane on/off, switching between Split/3D/Top/Front/Right views and main window resizing.
Construction lines - Fix bug where when drawing a construction line, letting the mouse button up outside the viewport would finish the construction line, which prevents snaps from being changed. Changed to same behavior as V3. Fixes a bug reported by Vladimir on the forum here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8731.59
Numeric input field display - if a value is typed into an input field the number of decimal places that were used is remembered for the session and will be used the next time the field is displayed. Fixes problems like typing in 0.001 for the Rebuild command tolerance but then having it show up as 0 the next time because of rounding to 2 decimal places.
Command macros - Make macro parameters sent in command line parameters also work for non-persistent controls like the ones in the Box command. Updated the UI for several commands to have input field ids of just "width" and "height" so now it's possible to make a shortcut of Box width=10 for example.
Straight snap - Fix bug where pressing or releasing Shift without any mouse movement didn't show the straight snap changing as it did in V3.
Alt+MMB view manipulation - Revert Alt+MMB to Pan to behave same as previous versions of MoI. Previously in V4 Alt+MMB had been set to do view rotation in the 3D view for compatibility with 3DS Max, but this change in default behavior has caused problems for some users accustomed to how V3 behaved. You can still enable Alt+MMB to do view rotation by a setting in moi.ini : [View] AltMMBRotate=y
Alt+RMB view manipulation - Add option for Alt+RMB to do Pan instead of Zoom, for ZBrush compatibility. This can be enabled in moi.ini under [View] AltRMBPan=y
Shortcuts editor - Fix bug where right-clicking in a text control in the Shortcuts editor to get the cut/copy/paste context menu didn't work right.
Windows shutdown bug - Fix bug when shutting down Windows while MoI is still open reported by Vladimir in the forum here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8731.81
Trim curve by point - Update tolerance used for trimming curves to points. Fixes Trim bug reported by bemfarmer on the forum here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8786.18
Fix crash on program shutdown if license key dialog was canceled.
OBJ export - Fix invalid UV coordinates generated in .obj export when meshing a degenerate face. Fixes bug reported by 4rw1n in the forum here: http://moi3d.com/forum/index.php?webtag=MOI&msg=8754.20
Added additional script interface for Curve and CurveSegment objects.
For both Curves and CurveSegments:
crv.domainMin - Property that returns lower bound of the curve's parametric domain.
crv.domainMax - Property that returns upper bound of the curve's parametric domain.
crv.evaluatePoint( t ) - Function returning a point for the given parameter value.
crv.evaluateTangent( t, FromLeft = true ) - Function returning a unit tangent vector for the given parameter value. Optional second parameter controls calculating the tangent from the lower or higher parametric side at a discontinuity, default value = true.
crv.evaluateCurvature( t, FromLeft = true ) - Function returning the curvature vector for the given parameter value. Optional second parameter controls calculating the tangent from the lower or higher parametric side at a discontinuity, default value = true.
crv.evaluateDerivatives( t, NumDerivs, FromLeft = true ) - Function returning a list of derivative values for the given parameter value. Optional third parameter controls calculating the tangent from the lower or higher parametric side at a discontinuity, default value = true. The derivatives are returned in a list of length NumDerivs+1 with index 0 having the point value, index 1 having the first derivative, index 2 having the second derivative, etc...
crv.isPlanar - Property that returns true if the curve's control polygon is planar.
crv.planarFrame - Property that returns a coordinate frame with an origin point at the curve's control polygon centroid and a z axis along the plane normal, only valid if crv.isPlanar == true.
crv.isOnPlane( frame ) - Function that returns true if the curve is on the given frame's x/y plane.
crv.isOnParallelPlane( frame ) - Function that returns true if the curve is on a plane parallel to the given frame's x/y plane.
crv.isClosed - Property that returns true if the curve is closed.
crv.isPeriodic - Property that returns true if the curve has periodic ends (overlapping control points at start/end rather than a corner point at the start/end).
crv.isDegenerate - Property that returns true if the curve has a degenerate control polygon with all the points stacked in the same spot.
crv.isLine - Property that returns true if the curve has the shape of a line.
crv.isSimpleLine - Property that returns true if the curve is a simple line segment made up of only 2 control points.
crv.isCircle - Property that returns true if the curve is a circle.
crv.isArc - Property that returns true if the curve is a circular arc.
crv.isEllipse - Property that returns true if the curve is an ellipse (either a full ellipse or an elliptical arc).
crv.conicFrame - Property that returns the coordinate frame of a circle, arc, or ellipse. Only valid if isCircle, isArc, or isEllipse returns true.
crv.conicRadius - Property that returns the radius of a circle, arc or the x-axis radius of an ellipse. Only valid if isCircle, isArc, or isEllipse returns true.
crv.conicRadiusY - Property that returns the y-axis radius of an ellipse. Only valid if isEllipse returns true.
crv.conicEndAngleRadians - Property that returns the end angle in radians of a circular arc. The arc starts at the x-axis of the arc's frame. Only valid if isArc returns true.
The following only apply to Curves, not CurveSegments:
crv.isClickSelected - Property that returns true if the curve was selected by a mouse click action.
crv.clickSelectionPoint - Property that returns the point on the curve where it was click selected. Only valid if isClickSelected returns true.
crv.clickSelectionParam - Property that returns the parameter value of the curve where it was click selected. Only valid if isClickSelected returns true.
crv.isClickSelectedNearEnd - Property that returns true if the curve was selected by a mouse click action and it was clicked on a spot closer to it's ending side than its starting side.
Added moi.ui.systemDPI property.
Make text input controls fire an onchange event in addition to the previous onvaluechange event - onchange is the standard one used by regular input elements.
Add new script function moi.ui.findElement( 'id' ) - looks through all UIPanels for any element with the given id. Returns the element or null if not found.
Implement startup scripts. Now when MoI is started it will run all .js files it finds in a directory named "startup" inside of MoI's AppData. It will also look for any startup directory inside the main application install folder as well. The scripts will run right before the main window is displayed - note that if the script puts up a modal dialog the main window won't show until the script finishes. Scripts will be run in alphabetical order. MoI will create startup and commands directories inside appdata.
Add a container with id="CommandBarCustomUI" in CommandBar.htm to make it easier to populate the UI from a startup script.
var container = moi.ui.commandBar.CommandBarCustomUI;
container.insertAdjacentHTML( 'beforeEnd', '<moi:CommandButton>Test1</moi:CommandButton>' );
Appdata/scripts directory - you can add a scripts folder inside appdata and MoI will also check there for running an "instant script".
Add trackpadgesture event for Mac - Set up a custom trackpadgesture event so the node editor dialog can use Mac trackpad gestures for zooming and panning.
The trackpadgesture event object has these properties:
event.gestureType : string value of 'Scroll', 'SmartZoom', 'Zoom', or 'Rotate'.
event.deltaX, event.deltaY : movement for Scroll , 2 fingers swiping.
event.numTouches : number of touch points being used for Scroll.
event.scaleFactor : scale factor for pinch/zoom
event.angle : angle change for Rotate.
SmartZoom is a 2 finger double tap, used by MoI viewports for view reset. The trackpadgesture event also has all the same properties as a mouse event giving the location of the mouse cursor. By default the Scroll gesture generates a mouse wheel event, to prevent that use event.preventDefault();