All posts by Sergey Prokhorchuk

ngPlant 0.9.7 Released!

Major new features and improvements:

  • fixed a bug in fragment shaders code. Absence of “uniform” qualifier in sampler declarations caused shaders compilation errors in some configurations. Thanks to Milos Zajic for bug report.
  • “turntable” camera mode implemented. Mode can be set in “Preferences” dialog (“Control” tab).
  • mouse sensitivity can be changed via “Preferences” dialog.
  • curve in curve editor now can be reset to default state. Click on right mouse button on empty space inside curve editor and use “Reset to default” menu item.
  • curve editor size is now customizable via “Preferences” dialog.
  • You can switch between perspective and orthographic mode in 3d-view using ‘NUMPAD-5’.
  • sensitivity of several numeric controls changed to more appropriate values (“Length” parameter of “Tube” stem model and “Density” parameter of branching algorithm).
  • g-mesh import plugin improvement – now “g” lines in “.obj” files are silently skipped. In previous version “g” lines presence caused .obj file import to fail. Thanks to Edwin van het Bolscher for help with this problem.
  • now “.obj export” (built-in – not plug-in) produces more optimal files in sense of size and material switch count.
  • fixed a bug which broke pywrapper usage (introduced in 0.9.6)
  • ngpbench utility implemented. It is used for ngpcore profiling.
  • ngplant 3d-view update speed improvements.

ngPlant 0.9.6 Released!

Major new features and improvements:

  • New stem model – GMesh added. This model allows to use arbitrary meshes as stems or leaves. A most generic way to import mesh is to use “.OBJ import” plug-in available under “Stem model->G-Mesh->Import .OBJ” item of plant structure popup menu. Two other possibilities are: “Stem model->G-Mesh->Triangle” (triangle stems) and “Stem model->G-Mesh->Rhomb” (rhomb stems). Set of available meshes can be extended without C++ coding – new type of plug-ins written in Lua is used to create stem geometry. “plugins/gmesh_rhomb.lua” and “plugins/gmesh_triangle.lua” can be used as a base for creating other gmesh plugins.
  • ngplant scan plug-ins directory (it can be set in preferences dialog) for export and g-mesh plug-ins. Export plug-ins now are available directly under “File->Export to…” menu.

ngPlant 0.9.5 Released!

Major new features and improvements:

  • ngpcore, ngput and pywrapper libraries now distributed under the terms of BSD License.
  • Now it is possible to add up to 8 branch sub-groups per branch (in previous versions up to 4 sub-groups could be added).
  • GLSL support added to ngplant. With GLSL support it is possible to see per-pixel diffuse lighting applied to plant models in real-time (normal-map support). Source code for shaders used by ngplant is located in “shaders/ngplant_default_vs.glsl” and “shaders/ngplant_default_fs.glsl” files.
  • Now it is more easy to build and use ngplant libraries under Windows. Thanks to Matthias Meyer for initial patches.

More detailed list of changes can be found in ngPlant package ReleaseNotes file.

ngPlant 0.9.4 Released!

Major new features and improvements:

  • partial texture layers support (ngplant,ngpshot and ngpview use diffuse texture layer only)
  • branch group copy operation implemented in ngplant
  • meaningful names can be assigned to branch groups
  • plant model auto-update now can be disabled

More detailed list of changes can be found in ngPlant package ReleaseNotes file.

ngPlant 0.9.3a Released!

ngPlant 0.9.3a is a bug fix release. This release fixes a (serious) bug which caused broken parameter panels appearance and made model editing almost impossible in ngplant application.

Thanks to Abe Madey and “jpbouza” (member of forum) for bug report.

ngPlant 0.9.3 Released!

New features and improvements:

  • Modeling changes:
    • “Phototropism mode” parameter removed from “Tube” stem model. Now it is possible to apply both modes to the same branch group using “Phototropism distribution” curve.
    • “Cylindrical” billboards support added.
    • LOD visibility range support implemented. It allows to control branch visibility depending on selected LOD level.
    • Transparency control implemented. It allows to make branches smoothly fade-in and fade-out during LOD changes.
  • ngplant application changes:
    • configuration file ‘texdirs’ is not used anymore, all ngplant settings are stored in ‘.ngplant’ configuration file.
    • “Preferences” dialog (“File->Preferences…”) can be used to set paths to textures, export and 3d-view user preferences. Note that changes to texture paths does not apply immediately, you should restart ngplant to apply changes.
  • Export functionality changes:
    • selective export support added – it is possible to exclude from export hidden branch groups and branch groups which are outside LOD visibility range.
    • Now it is possible to write export plug-ins for ngplant using Lua programming language. To run export plug-in use “File->Export to->Run export script…” and select script to run from “plugins” directory.
    • exp3dobj.lua plug-in implemented (it can be used as a reference for implementing other export plug-ins).
  • 3D-view improvements:
    • ground plane can be hidden now (“File->Preferences…->Misc->Ground visible”)
    • ground plane color can be changed using “Preferences” dialog
    • ‘NUMPAP-3′,’Shift-NUMPAD-3′,’NUMPAD-7′,’Shift-NUMPAD-7’ and ‘Shift-NUMPAD-1’ keys can be used to set camera to right/left, top/bottom and back view.
    • ‘NUMPAP-4′,’NUMPAD-6′,’NUMPAD-2′,’NUMPAD-8’ keys can be used to rotate camera by discrete steps.
  • Parameter panels improvements:
    • Now it is possible to enter numeric values directly from keyboard – double-click on Numeric control and enter number in opened dialog window.
    • Now it is possibe to edit curves more precisely – double-click on empty space in curve control and edit curve in resizable dialog.
    • base texture can be removed from material (previously it was possible only to change texture by another one)
  • Changes in other applications:
    • ngpview application now supports billboard branches (previous version rendered such branches as oriented rectangles)
  • C++ API (HLI) changes:
    • GetBillboardSize method added to P3DHLIPlantTemplate class
    • new constructor added to P3DHLIPlantTemplate class to allow create plant template using existing P3DPlantModel object.
    • GetBillboardMode method added to P3DMaterialDef class
    • IsLODVisRangeEnabled and GetLODVisRange methods added to P3DHLIPlantTemplate class
    • IsAlphaCtrlEnabled,GetAlphaFadeIn and GetAlphaFadeOut methods added to P3DMaterialDef class
  • Python API (HLI) changes:
    • GetBillboardSize method added to BranchGroup class
    • BillboardMode attribute added to MaterialDef class
    • IsLODVisRangeEnabled and GetLODVisRange methods added to BranchGroup class
    • AlphaCtrlEnabled and AlphaFadeRange attributes added to MaterialDef class

Thanks to all who participates in ngPlant discussion at project forum at and other sites and send me bug reports and feature requests. It helps a lot!

ngPlant 0.9.2 Released!

Major new features and improvements:

  • Wings stem model implementation. This stem model is useful for modeling palm leaves, ferns and similar ones.
  • Quad stem model improvements. Now Quad stem can be bent along its Y axis and scaled depending on its location on parent branch.
  • “simplefern” plant model – example of Wings stem model usage.
  • High-level interface for C++. This programming interface allows to use ngPlant models in real-time 3D applications. Documentation for HLI can be found here. ngpshow application (very simple plant viewer) is an example of using HLI in real-time 3D application.
  • Python bindings for ngPlant HLI. Now it is possible to create plant models exporters and viewers using Python programming language. Python extension module documentation can be found here. script (.ngp to .obj exporter) shows how to create .ngp exporters using Python.

More detailed list of changes can be found in ReleaseNotes file.