Blog Archives

iOS Open Source : UIView Transitions

Tiring of the same old view transitions? Check out the work of Jan Ilavsky – the video below shows the transitions available in Jan’s open source projet:

And here’s some good news, the source code now includes an additional transition over those shown in the video, Doors, where the view opens up from the middle as if you were pulling open double-doors.

Download HMGLTransitions

The project can be downloaded from github: HMGLTransitions.

Open Source Recommendations ?

Have you written or worked with iOS or Cocoa open source that you think others would find interesting, send me a note.

iOS Open Source : UIView Transitions

Tiring of the same old view transitions? Check out the work of Jan Ilavsky – the video below shows the transitions available in Jan’s open source projet:

And here’s some good news, the source code now includes an additional transition over those shown in the video, Doors, where the view opens up from the middle as if you were pulling open double-doors.

Download HMGLTransitions

The project can be downloaded from github: HMGLTransitions.

Open Source Recommendations ?

Have you written or worked with iOS or Cocoa open source that you think others would find interesting, send me a note.

Lifehacker Pack for Mac: Our List of the Best Free Mac Downloads [Downloads]

Looking for a few great, free apps to beef up your Mac? We’ve got you covered with our annual Lifehacker Pack for Mac. Here are the best OS X downloads for better productivity, communication, media management, and more. More »







Blender 2.57 Objective-C Export Script

A few days ago, the Blender Foundation put out the first release candidate of Blender 2.5. This release unexpectedly broke compatibility with most existing 2.5 python scripts, including my Objective-C header Export Script.

Which was great timing, since I needed to use the script today. I could’ve just gone back to an older version of Blender, but decided instead to re-write the script to work. I just added to GitHub, the new 2.57 compatible version of the export script. This version is back to being an add-on that you can add through the User Preferences.

I’ve also added a few options that you can select when exporting (they’re on the left side of the file selection screen, underneath the volumes and recently visited locations). You can see the new options in the following screen grab:

Screen shot 2011 04 05 at 2 32 44 PM

The first option lets you specify whether modifiers are applied before exporting the mesh. If you uncheck this, the script will strip the modifiers before exporting, otherwise, it will apply them to the mesh before exporting.

The second option will rotate the object 90° along the X axis, which converts the object from Blender’s Z-up coordinate space to OpenGL’s Y-up coordinate space. I’ve made this the default, but I could foresee situations where people would want to skip the conversion.

The final option will move the export the object using its world space coordinates rather than exporting it using object space coordinates. This option will, for example, preserve relative distance between multiple objects exported from the same file into different headers. Or, to put it another way, objects exported will normally have use their coordinates as they relate to the object’s origin, regardless of where the object is in the Blender scene. If this is checked, the vertex coordinates will be exported relative to the scene’s origin.

NB: There was a problem with the triangulation code in the version posted earlier. If you’re having problems, pull again from GitHub.

©2008-2010 Jeff LaMarche.
iphonedevelopment.blogspot.com

MC3D – Platform Agnostic 3D Foundation

Sorry for the lack of posts recently. Things have been, well… you know. Same old story. Super busy. Which is good, but it’s murder on blog post frequency.

I’ve recently had to port some OpenGL ES work I did from iOS to Android. It used to be that doing so would have been insanely painful (as opposed to just painful). I would have had to convert the Objective-C code to Java, and then maintain completely distinct sets of code that do the same exact thing. Fortunately, the Android NDK (Native Development Kit) allows you to write code for Android in C/C++. The version of the NDK supported on 2.2 still requires part of the Activity (Android’s counterpart to an iOS view controller) to be written in Java, but does allow you to call C/C++ code using JNI. In 2.3 and 3.0, you can do entire activities in C or C++.

This is a huge step forward for Android for those of us who do performance-critical work on multiple platforms, but it’s not without some pain. Debugging across the JNI bridge is… less than easy. But, being able to share code across platforms is a huge win, and being able to get native speeds in the process is teh awseome.

During these projects, I’ve been taking a lot of my 3D-related code and creating a new set of platform-agnostic C functions and types. I’ve been cleaning up and making names consistent, and placing appropriate pre-compiler macros to make sure the code compiles correctly everywhere. On iOS, the library will take advantage of the Accelerate Framework in places, but doesn’t require Accelerate to function.

I’ve chosen C because I don’t like mixing C++ and Objective-C. The object models are too different for my tastes. But I’ve also made sure to include proper ifdef’d extern statements so that you can import the MC3D header files from C++ without hassle.

I’ve dubbed this set of functions MC3D, and I’m making it open source under a simplified version of the simplified BSD license (simplified simplified BSD license?). I’ve taken out the attribution requirement, so the only requirement is that if you re-distribute the source code, you have to leave the copyright and license text intact. That’s it. Otherwise, you can use it for free in any project, commercial or otherwise, without paying anything, without attributing, and without asking (no really, you don’t need to ask).

MC3D is still very much a work in progress, and I’m only adding code to the repository that I feel is ready for public consumption. Much of what’s in MC3D has been posted here before, sometimes with different names or in slightly different form.

I have other code that I plan to add in the future, including higher-level functionality like model loading, scene management, and skeletal animation, but I won’t add anything until its both solid and platform agnostic.

Currently, documentation is very sparse, and I currently can’t offer any support or help with using it, so caveat emptor! I will gladly accept contributions, bug fixes, and new functionality back into the MC3D codeline.

MC3D on GitHub.

Link fixed, sorry about that

©2008-2010 Jeff LaMarche.
iphonedevelopment.blogspot.com

OpenGL ES iOS

I’ve created a new public project on GitHub for classes, scripts, and projects related to OpenGL ES programming on the iPhone. I’ll be slowly consolidating all of my OpenGL ES code snippets, utilities, and sample projects except for the particle generator (which has its own repository) into this location.

Right now, all it has is:

  • Blender export script for Objective-C for Blender 2.49a
  • Blender export script for Objective-C for Blender 2.5+
  • My old OpenGL ES Xcode project template for OpenGL ES 1.1
  • A fairly simple OpenGL ES 1.1 Xcode project
  • A fairly simple OpenGL ES 2.0 xcode project
  • A few OpenGL ES-related categories and classes
  • My old Wavefront OBJ file loader

I’m happy to accept back changes as well as additions.

©2008-2010 Jeff LaMarche.
iphonedevelopment.blogspot.com

How to Make Your Own Open Source, Dropbox-like Sync and Backup Service [Sync]

We’ve outlined a few things you can do when Dropbox goes down, but if you want to take a more extreme approach you can roll your own Dropbox-like syncing and backup service with some open source software. More »







Tile Cutter Open Sourced

I have open-sourced Tile Cutter under the MIT license and put it on Github as a public project. This application was written extremely quickly (less than half a day) because I needed the functionality for a client project, so there are several things about this application that are klugey, including some uncomfortable crossing of the boundaries between what a view should do and what a controller should.

But, it works, and I don’t see myself having time to go clean it up anytime soon, so I’m donating it to the public good, warts and all. I welcome back any enhancements, bug fixes, or modifications, but you are not required to give anything back under the license.

©2008-2010 Jeff LaMarche.
iphonedevelopment.blogspot.com

Google Wave Lives On (in a Box) [Google Wave]

Google has announced that despite Wave’s demise as a Google App, its open source code will continue to be developed into a fully-functional application available to anyone with the desire to host it. More »







FreeApps Bundles Popular Free Applications for Easy Downloading [Downloads]

Collecting and installing all your favorite apps is usually the most tedious part of a fresh OS installation. FreeApps makes bulk installation of popular free and open-source applications a snap. More »







WP Like Button Plugin by Free WordPress Templates