If you find this software useful, please consider making a donation to help us continue to provide and support quality products like this.
The current stable version is 0.7.2. This version is compatible with OpenGL ES 1.1/cocos2d 1.x. Download it now using the link on the right.
A development preview of cocos3d 2.0 is available on github! This development preview of the next generation of cocos3d includes the following great new features:
- Compatible with OpenGL ES 2.0/cocos2d 2.x.
- Support for GLSL shaders, and comes with an extensive suite of default shaders.
- Backwards compatible with OpenGL ES 1.1/cocos2d 1.x.
- Build 3D apps for either iOS or Mac OSX.
- You can learn about how to write and use shaders for cocos3d 2.0 here.
- You can find the 2.0 API reference here.
cocos3d 2.0 is nearing release, and it is recommended that you use it for all new development.
This is the home page for cocos3d, a sophisticated, yet intuitive and easy-to-use, 3D application development framework for the iOS platform. With cocos3d, you can build sophisticated, dynamic 3D games and applications using Objective-C.
cocos3d adds to this a full 3D modelling space, including 3D mesh models, perspective projection cameras, materials, and lighting. With cocos3d, you can populate your world with 3D models exported from 3D editors such as Blender, 3ds Max, or Cheetah3D, combined with models you create dynamically in your Objective-C code. And users can interact with your 3D objects through touch events and gestures.
Both cocos3d and cocos2d are built on top of the OpenGL ES frameworks that runs on all iOS devices, and both are written in the native Objective-C familiar to all iOS developers. With cocos3d, you can effortlessly create a full 3D game or application without getting into the nitty-gritty needs of the OpenGL ES state machine, and without having to switch over to C or C++, as required by most other 3D frameworks.
- Seamless integration with cocos2d. Rendering of all 3D model objects occurs within a special cocos2d layer, which fits seamlessly into the cocos2d node hierarchy, allowing 2D nodes such as controls, labels, and health bars to be drawn under, over, or beside 3D model objects. With this design, 2D objects, 3D objects, and sound can interact with each other to create a rich, synchronized audio-visual experience.
- Supports both OpenGL ES 2.0 and OpenGL ES 1.1 in the same codebase.
- Extensive suite of default GLSL shaders.
- Seamless integration with the iOS
- Pluggable loading framework for 3D models exported from familiar 3D editors such as Blender, 3ds Max or Cheetah3D, or through industry standard 3D object files such as Collada or PowerVR POD, or even from your own customized object file formats.
- 3D models can be selected and positioned by touch events and gestures, allowing intuitive user interaction with the objects in the 3D world.
- 3D models can include animation sequences, with full or fractional animation.
- 3D model objects can be arranged in sophisticated structural assemblies, allowing child objects to be moved and oriented relative to their parent structure.
- 3D models and assemblies can be easily duplicated. Each duplicated model can be independently controlled, animated, colored, or textured. But fear not, underlying mesh data is shared between models. You can quickly and easily create swarming hoards to populate your 3D world, without worrying about device memory limitations.
- 3D models, cameras, and lighting can be manipulated and animated using familiar cocos2d Actions, allowing you to quickly and easily control the dynamics of your 3D world, in a familiar, and easy-to-use programming paradigm.
- 3D objects can be covered with dynamic materials and textures to create rich, realistic imagery.
- Multi-texturing and bump-mapped textures are available, allowing you to create sophisticated surface effects.
- Vertex skinning, also often referred to as bone rigging, allowing soft-body meshes to be realistically deformed based on the movement of an underlying skeleton constructed of bones and joints.
- Automatic shadowing using shadow volumes.
- Collision detection between nodes.
- Ray-casting for nodes intersected by a ray, and the local location of intersection on a node or mesh, right down to the exact mesh intersection location and face.
- The 3D camera supports both perspective and orthographic projection options.
- Objects can dynamically track other objects as they move around the world. The 3D camera can dynamically point towards an object as it moves, and other objects can dynamically point towards the camera as it moves.
- Lighting effects include multiple lights, attenuation with distance, spotlights, and fog effects.
- Mesh data can be shared between 3D objects, thereby saving precious device memory.
- Mesh data can freely, and automatically, use OpenGL vertex buffer objects to improve performance and memory management.
- Culling of 3D objects outside of the camera frustum is automatic, based on pluggable, customizable object bounding volumes.
- Automatic ordering and grouping of 3D objects minimizes OpenGL state changes and improves rendering performance. Pluggable sorters allow easy customization of object sorting, ordering, and grouping for optimal application performance.
- Integrated particle systems:
- 3D point particles provide efficient but sophisticated particle effects.
- 3D mesh particles allow particles to be created from any 3D mesh template (eg- spheres, cones, boxes,
- Automatic OpenGL state machine shadowing means that the OpenGL functions are invoked only when a state really has changed, thereby reducing OpenGL engine calls, and increasing OpenGL throughput.
- Sophisticated performance metrics API and tools collect real-time application drawing and updating performance statistics, for logging or real-time display.
- Sophisticated math library eliminates the need to use OpenGL ES function calls for matrix mathematics.
- Fully documented API written entirely in familiar Objective-C. No need to switch to C or C++ to work with 3D artifacts.
- Extensive logging framework to trace program execution, including all OpenGL ES function calls.
- Includes demo applications and Xcode templates to get you up and running quickly.
You can download the source code for cocos3d in the download area at the top-right of this page. It is distributed under an MIT license, which makes it free for you to use in your projects. However, if you find this code is useful, please remember to make a donation above to help us fund the ongoing development and support of frameworks such as this.
Once downloaded, unzip the file and follow the instructions in the
README document to run the
install-cocos3d script from an
OSX Terminal session. Since cocos3d is built on top of cocos2d, you will also need to download the latest version of cocos2d before running the installation script.
Once installed, it’s easy to get your first working cocos3d application up and running. Open
Xcode, create a new project using the cocos3d Application template, and then simply build and run it to produce a 3D take on the traditional ‘hello, world‘ application.
In addition, the cocos3d distribution contains a
Demos folder, where you can build and run the
CC3DemoMashUp app, a more sophisticated sample of what’s possible with cocos3d, and the
CC3Performance app to explore cocos3d performance characteristics with various types of 3D models. These two demos are your best source of understanding about what is possible with cocos3d, and how to work with the framework.
- Learn how to write 3D iOS applications using cocos3d with the cocos3d Programming Guide.
- Explore the cocos3d API.
- Browse a list of guides and articles about cocos3d.
- Find out our plans for extending cocos3d by reviewing the cocos3d Development Roadmap.
- Check out a example video of a robot game created by cocos3d user andyman404 in less than a week!