Showing posts with label Codeplex. Show all posts
Showing posts with label Codeplex. Show all posts

Friday, 23 November 2012

XNA 3D Gizmo v2.0.0

I've just released a new version of the XNA 3D Gizmo! The updated source has been available on CodePlex for a while, but I never got around to add the final touches and create a release.

As the name suggests (2.0) it involves a major change compared to 1.0 which was released well over a year ago. The new release provides a much improved framework and simplified code while adding customization options if more advanced usage is desired.





The following is a snippet from the release notes:

FOR EXISTING USERS: If you are already using v1.0 you may choose to leave this release alone unless you require additional customization options or more advanced features which have been added in this release (see notes below for all additions)

- Quaternion support.
- Built-in vertex lists replacing fbx models (easier implementation for new users),
- ITransformable interface to add transformation support to anything in the scene (example: vertices inside an editable mesh that lives inside the 3d scene)
- A lot of framework simplifications and no more dependancies on Engine class or any other outside classes.
- Gizmo is now a standalone DLL (class files can still be placed in any other engine project without a hitch if standalone DLL is not preferred)
- Support for custom Select functionality (ITransformable.Select(ray) to allow users to define their own selection methods (triangle precision or bounding box etc.)
- Improved internal code for readability.
- Transformation is now done through event handlers, allows much more customization options on how to apply transformations in your own editor. For example it allows you to support a undo/redo system.
- You can now set different 'selection pools' this allows you to select and/or ignore certain object types by only passing a pool of a specific type (example: pass a pool of 3d entities or a pool of selectable vertices)

You can get the latest version right here!

Saturday, 5 November 2011

Gizmo update coming soon!

Hi guys, just wanted to let every XNA3DGizmo user know that a update is currently being developed. I noticed that the original implementation had some sloppy shortcuts that could make it more difficult to implement if you were unfamiliar with the code. This included references to the Engine class among other things.

So I decided to improve things by removing any reference to outside classes (including InputState which is no longer required) I realized this update is necessary as even I found it difficult to implement the gizmo in a new project and wasn't a simple drag&drop operation as it should be (or as close as possible to it) this made it obvious some improvements were required to the public version.

The last public update was quite a while back and I was using a modified version with already several improvements implemented (such as multiple type of objects you can select as shown in the Vertex Manipulation Video where I select both scene objects and vertices with the same Gizmo component)


So in general the upcoming update should make it much easier for everyone to implement this gizmo into his own code/editor. If you had trouble integrating it, please let me know. There is no current ETA on therelease, but I'll try to do it sooner than later...

Sunday, 3 July 2011

Input & Hotkey Management

Input management is one of those things I never really paid a lot of attention to, using simple if-statements inside an Update() or HandleInput() function worked fine is most cases, until recently. Recently I started to notice my input handling got scattered throughout my code-base and a lot of coupling was required to make sure it was handled properly.

To prevent hotkey-clutter (especially when modifiers (ctrl, shift, alt) get involved) I started working on a HotkeyManager that handles groups of Hotkeys in an easily maintanable way. Initially it was supposed to assign a HotkeyGroup to one or more 'editor-states', like 'only-use-this-hotkey-while-in-editmeshmode', I soon realized this wasn't going to be very helpful and I would have to continuously add new states to keep it up to date...so this was scrapped and replaced by a simpler, but more powerful feature - Predicate<T>. Using predicates enables the manager/hotkey to activate only if a predefined condition is met (i.e. if gizmo.IsActive == true -> execute the hotkey-function) it can contain more than one statement such as gizmo.IsActive == true && Camera.IsMoving == false for example...if both conditions are met, the hotkey may execute with the associated Action (the method assigned to the hotkey) The code-snippet below should be able to illustrate its use.





You may have noticed the above code refers to the GizmoComponent class. SetSelectionPool(IEnumerable<ISelectable> selectables) is a new function I've added to more easily support custom collections and to assign new collections at runtime, in my case this is used to switch between vertex- and object-selection more easily. I will add this along with many other improvements to the open-source gizmocomponent at codeplex at some point.

Back to the hotkeys...within InitializeHotkeys() there is a HotkeyGroup class, this class holds a collection of hotkeys that belong to the same component or share similar functionality. These groups are passed to the manager and will be updated automatically.  The Hotkey class is the main class and has several parameters including key (supports all Keys, MouseButtons and GamepadButtons) a KeyPressState (press, release, hold) a KeyModifier (control, shift, alt or a combination - not illustrated in img), the parent  (used by the Predicate to verify the conditions) and the Action to execute after the key is pressed and all conditions are met.

A quick search revealed there are no suitable Input/Hotkey managers (I didn't like any of the libraries available on Codeplex) so I might turn this into an open-source component/library if enough people are interested in such a library.



Actions and Vertex manipulations are also still WIP, I made some progress on both these tasks and should have some something new to blog about soon enough.

Tuesday, 29 March 2011

SgMotion: Rig/Skeleton Visualizer

A couple of days ago I added a new feature to the SgMotion animation library.
It visualizes the animation skeleton to debug animation and rigging issues and helps finding bone/dummy names and indices more easily.


You can grab the latest release for SgMotion over at codeplex.

An example of how to use this new feature is available inside the Sample project.

As an added bonus you can cycle through the skeleton to highlight bones and their children, watch the video to find out exactly what I mean.

Saturday, 26 February 2011

XNA 3D Gizmo Video!

Finally a video about the Gizmo showcasing the feature-set. I've added some tunes as well this time, hope you like it...

Thursday, 24 February 2011

XNA 3D Gizmo v1.0.0 Released!

The latest version of the XNA Gizmo is now available on Codeplex! You can download it here.

Since my last announcement I have added many features (including all those I mentioned in my previous post) and it should be ready to use in your own editor. I supplied a small framework to show the Gizmo at work. I have tried to make the implementation to your own engine/editor to be as painless as possible, however it can always be easier...(if I knew what all of your engines/editors would look like :) )


I still haven't made a video to showcase all of the new features, but it should be available soon...

Download Link

Saturday, 12 February 2011

Gizmo Roadmap & Engine Revamp

First off, there have been several updates for the Gizmo since the last announcement. You can download them on the Source Code-tab on Codeplex.

Most (features and code) has already been implemented by now, however there are still some nice features on the horizon. This includes:

- Grid & Rotation snapping.
- Multi-layer selection. (or click-through selection)
- Reset transform.
- Added support for multi-selection.
- Precision Mode.

Some of these were already part of the old gizmo, and others were already implemented in the internal version of the Gizmo I used in my own editor a while ago. So it shouldn't take long to implement any of these in the revamped public release...Stay tuned for updates!

Next, a quick notification on the Core Engine roadmap. Since there is currently no game in development I can make breaking changes without ramifications. This is something I often do when there are no games actively developed with the Engine. This time it's a pretty huge revamp of the complete engine-structure. So far I have deleted over 110 classes to make room for a new and improved structure including a much better GameState management system that is first on the list.

Not all code is deleted though, I will be using a lot of the old code for new components and managers, deleting them for now makes the re-design a lot quicker and efficient (preventing 100's of errors)

In addition to the new structure I'd like to design components in such a way that it's easier to create external projects for open-source initiatives such as sgMotion & GizmoComponent. If I can just copy/paste my own component to one of the open-source projects, it will be a lot easier to update and maintain. The Gizmo is a good project to fine-tune just that.

A new video should be up soon, once the Gizmo is out of Beta.

Tuesday, 8 February 2011

Gizmo Beta Released!

It's finally here...well kinda. It's still in Beta, but a lot of its functionality is working and now you can try it out for yourself on CodePlex.

There are some known issues (including local-space transformations not working as intended) but I really wanted to let you guys try it and see what you think of it.

The component has been re-built from the ground-up to eliminate all of the old issues and improve readability and flexiblity of this new revamped component. Feedback and suggestions are welcome, you can post it in the comments or leave a message on Codeplex instead.

I'll leave you with just this image and a download link for now, a video will follow once I have a fully stable build.


Since I'm finally using SVN, you can directly follow my updates on the Source Code tab of codeplex.

Saturday, 5 February 2011

GSM & Gizmo Update

Still no release available for the Gizmo project. However, with the Translation mode pretty much complete and the Rotation well under-way it's getting closer.

I finally created an SVN-host. This means the next Gizmo release will use it as well, so you should keep a sharp-eye on the Source Code tab of the project page.

Among other things I completely re-designed the GameState management of the engine. the previous GSM had faded over time in flexibility and support due to heavy changes in overall engine structure. This new system should increase readability, flexibility and performance. The Gizmo will use a small portion of the GSM. As it will be flexible, you can easily change the components to fit in your own framework without having to use mine.

The (normally invisible) collision hull of the Rotation-mode. Mesh vs. Ray will determine the selected axis.

The already complete Translation-mode. As seen in the previous video.

Sunday, 21 November 2010

Updated SgMotion for Sunburn 2.0.6

SgMotion v1.2 for Sunburn 2.0.6 is now available on Codeplex!

Mostly changes to the Sample and removed some older unused classes that were causing trouble with the new XNA 4.0

The PlayerMarine.fbx class seems to loose his Animation clips in XNA 4.0 for an unknown reason. I have tested this issue with some of my own animated models, and they still work fine (using KW-Xport)

If you run into similar issues with your own models, I added a small *.xml file that demonstrates a quick way to split the model into custom animation clips (Note, default clip name in .fbx model is "Take 001")


Saturday, 6 February 2010

sgMotion v1.0.0 Released!

sgMotion is an animation library (based on XNAnimation by Bruno Evangelista) and provides full integration with both the Sunburn Engine and the Sunburn Framework. The project is available for download on Codeplex:

http://sgmotion.codeplex.com/

The library source + Sunburn sample code is provided to get you started! Current release supports Sunburn 1.3.x for both PC & Xbox. For the older 1.2.x release click here.


Note: The previous releases will be maintained for some time using my Dropbox public space. For new releases check out the Codeplex page above.

XNA Gizmo Released!

Finally got the time to create a sample with simplified classes of the current Gizmo used in Core Engine. It was quite a bit more than anticipated, with all engine utilities and tools used by the Gizmo and EditorComponent (the two main-classes for object movement) some parts had to be rewritten or completely removed.

The project has been published on CodePlex:
http://xnagizmo.codeplex.com/

The project status is set to Beta. Everything should work out of the box. If you run into any issues using the code/sample, leave your comment here or use the Discussions tab on the CodePlex project page.

I hope you enjoy!