In our last post we gave a short outlook what to expect in 1.3 and when it’s released. We said it would be released around end of march. Well, we didn’t manage to deliver 1.3 in time. Let me describe what will be released with 1.3 and why we didn’t get that finished in time and when you can expect it to be released:
- STEP-Import: Import your own 3D models (or the ones you downloaded from the manufacturer or 3dcontentcentral.com, tracepartsonline.net, grabcad.com and various others), setup materials and share them with the Copper community
- A global and personal material library will make the whole import process easy to use and very fast
- 3D view respects cut out areas inside the board now (wires forming a closed shape inside the outer board forming shape on the Dimension and Milling layer)
- Better placement of lights in 3D view
- Various bug fixes and smaller enhancements
- Planned but not finished yet, so could be postponed to 1.3.1 or 1.4: Setup your own material for the floor and solder mask in 3D view (hey, we have a material editor, so make use of it ;-))
A few thoughts and more information on various aspects of this release and why we didn’t make it in time:
I have been working on this for more than a year. Not full-time, of course, but I kept working on it over and over again until I managed to get basic STEP import finished. But being able to load a STEP file and import it into a 3D model is only part of the game. We want Copper to render 3D photorealistic images in real time. Most STEP models don’t have nice materials setup. But we want pins to reflect light, we want nice colors and highlights on our parts. This means a user that imports a STEP model should setup materials. That implies a material library, a custom one as well as a bundled one to speed up on that process. And we have to enter meta data so we and the community can find the right model for our part in our next projects.
These screenshots show the import window in action. You can drag and rotate the part in 3D view to position it relative to the PCB. There will be a little helper to ease in that. At the moment you have to orient the part via drag, rotate and release so it is viewed from the “front”, but I am working on a more intuitive system at the moment to correctly orient the part.
Yes, community is key here. I think it doesn’t make sense for everyone uploading the same 2×07 male SMD pin strip over and over again. If anyone ever has uploaded a 3D model it should be usable by the community. Of course there will be the possibility for “private” parts, i.e. parts that you designed but don’t want to share with the community. But I will even make that an in-app purchase to bring users of Copper to share stuff and work.
To make this happen I had to create a whole new cloud system with user accounts and an enhanced data structure, as I wanted everything related to this part of Copper to be in the cloud. It makes sense to have the same material library on every computer you are using, and it makes sense to have a bundled material library that can be updated without an application update.
Developing the cloud has been a hard process. I have been a web programmer for more than 20 years. And while I have been developing my stuff before I developed some kind of a “always works” way of doing things. But unlike my web projects before Copper is used globally. That means it makes sense to use cloud services that are served around the world. I have chosen parse.com for this as I had experience with that before and really liked it’s ease of use. When I started working with it it got shut down. The long journey of finding another service began. There are a lot of backend as a service (BAAS) companies out there. I chose backendless.com. They are very similar to parse.com and easy to use, yet quite powerful. But they were buggy as hell. I think they got overwhelmed by the demand driven of parse.com closure.
I lost weeks going through that. Finally I decided to develop my own backend. As I did numerous times before. The good thing is I exactly know where your data is stored. But, of course it’s something I wouldn’t have to build myself. I would like to work with Apples CloudKit, but it’s not possible to use for apps outside of the AppStore, although there are a few ways to work around that limitation, but I didn’t want to work with very alphaish software developed by someone else. If Apple is opening CloudKit on WWDC I will likely drop my own cloud implementation and port to CloudKit, but that won’t happen until the end of the year.
We only need a way to identify a person to store who has uploaded a (private) part and to keep track of material libraries, favorites and the like. We are in no way interested in other personal data. Sign up only requires an email address and a password and a name (choose whatever you like).
While I have finished most parts of 1.3 there still are a few things to do. There are a few bugs left, and I will have to thoroughly test the release. If you are interested in receiving a beta release please drop us a line at firstname.lastname@example.org. 1.3 will definitely be released in April, the beta version will be released hopefully in about two weeks.