Announcing ShapeJS Cocreators!

Discussion in 'ShapeJS' started by ProfessorBeekums, Sep 17, 2014.

  1. One of the main advantages of 3D printing has always been the possibility for endless customization. Shapeways has already provided that functionality by allowing designers to create cocreators, which would flag their products as being customizable. Users would provide the inputs that would make that product personal for them and the designer would create the customization by hand.

    The natural extension of this is to streamline the process a bit more. On that note, we're happy to announce the pilot of ShapeJS Cocreators! When you specify that a product can be customized, you will now have the option to either "Customize by Hand" or "Customize with ShapeJS". Choosing to customize with ShapeJS will allow you to input a ShapeJS scripts as well as the necessary parameters for your script. With this option, users who choose to personalize your product will be able to automatically see what it will look like. Since the model file is generated by ShapeJS, you will no longer be required to make the customizations by hand. This also means that Shapeways can start printing the product immediately, allowing the user to receive their personalized product much sooner than before.

    Check out an example of the user experience here.

    Please note that this is still a pilot. We will be looking to make improvements in the future. Your feedback would definitely help!

    If you wish to be part of the pilot, please fill out and submit the following form

    As always, if you need help with writing ShapeJS scripts, you can post in this forum or email

  2. MrNib
    MrNib Well-Known Member
    That's cool but I can't imagine that the design rules are being followed! Is a design rule check part of the process?


    Also are the models being saved in the hosting store in a separate hidden shop section? If you look at the preview images in the shopping cart you also can't see or verify what the text is that you chose to apply to your ring, unless I'm doing something wrong. There is no way to view the ring in 3D using a link in the shopping cart or for that matter any notation of the parameters entered into the automated co-creator, in this case the text input..
  3. jasolo
    jasolo Member
    With ShapeJS it's possible to use STL files (load function). I'm thinking about a cocreator that uses several STLs from me that will rotate according to the user's parameters and will be joined to create the final product. The user doesn't provide the STLs, they are fixed STL created and uploaded by me once. My question is if ShapeJS cocreator allows me to use the load() function or all the meshes have to be made on the fly with the other ShapeJS functions.

    Other question is about the pricing. The wedding band example has a fixed size and price, so it seems ShapeJS cocreator is similar to "classical" cocreator, that is, the extra volume you expend creating the model, means less benefit for the author. No problem with my idea (fixed volume) but it's good to know for future ideas. In the case of a cocreator calculating the final volume and adding the author markup, the price showed to the user before clicking the Personalize button should be "From $40" or something similar.
  4. @MrNib

    We still perform automated and manual design rule checks upon order. You are correct in that there is no guarantee that every possible input can result in a printable product. The reason for the pilot is so that we can work with the first few designers to ensure a high quality in the cocreators made public.

    Like the manual cocreator, the customer will have a copy of their personalized product in "My Models" to view the final version. You can also preview before adding to cart.


    At the moment the ShapeJS CoCreator will only allow you to use one file: the model that the cocreator is built on top of. You can upload files that are not STLs and we will convert them for you.

    Yes, the pricing of the ShapeJS CoCreator is still similar to the original cocreators by using max volume. This is one area that we are considering improving so if you have any suggestions, we'd love to hear them!
  5. MrNib
    MrNib Well-Known Member
    The reason I had asked about where the models were was because I could not find any in my models, and there was no link to the model from the shopping cart. There was also no ability to view the file in the cart. I'll assume that things are not yet completely configured. The example cited above is now not available for purchase so the process can no longer be evaluated.

    And when models are viewable in someone's my models I assume that there will be no ability to download the digital file, because otherwise why put any effort into writing scripts?
  6. Ah, it looks like it only gets added to My Models AFTER you order it... and the 2D render is updated in the order page. I'll note it as one of the things that could be improved. Thanks!

    Is there a reason you feel the render in the cart is more valuable than the 3D preview?

    The models are like other cocreators, they exist in the buyer's my models so that they can purchase it again, but they can not download it unless you enable the download link (or if the owner is also the buyer).

    I didn't realize that the example listed is no longer for sale. There are some others: terialId=81 on-pendant.html?li=aeTabs
  7. Wahtah
    Wahtah Well-Known Member
    Very nice feature! I have some issues though (not all of them original):

    I feel the process is not clear enough from a buyers point of view. In the cart it should be possible to see your personalisation, either by having the correct thumbnail, or just putting it in text (like Size: 3 or Text: BOOM), preferably both. This would give customers much more confidence to press "Check out".

    Pricing: having a fixed price really limits the options for personalisation to minor volume changes, like small engravings or small size changes. Taking your ring example: how do you explain to customers that a ring size 3 costs the same as a ring size 13.5? I would like a system where the base price is calculated for each personalisation, after which a fixed markup (or a percentage) gets added. This would allow much more radical personalisation, like a fairly priced name pendant whether you are called Ed or Marie-Antoinette.

    Scale: when you preview your personalised item it would be great if the Dimensions at the bottom were updated.
  8. jasolo
    jasolo Member
    I have recreated the second part of my model with ShapeJS, so this time using one file is fine. I have tested my model in and running the script takes several minutes when voxel size is 0.1 mm and sometimes I get an out of time message. Testing with 0.4 mm is fine but the final print requires better quality. I think the problem is the size of my model. The STL I'm using for testing is a low detail mesh but with the bounding box the real STL will need:
    dest = createGrid(-50*MM,50*MM, -50*MM,105*MM, -10*MM,110*MM, voxelsize);
    Maybe ShapeJS is designed for smaller objects? The model I'm trying to convert to ShapeJS Cocreator:
    The support will be made with ShapeJS primitives and the chains&numbers part will be the main part of the cocreator. It will be rotated and joined to the support.
  9. Wahtah
    Wahtah Well-Known Member
    @ProfessorBeekums: You say customers won't be able to download the model they bought unless you allow it. But by having a 3D preview you are giving away the 3D data even before the model is bought. Maybe I'm being paranoid here, but that's why we only have rendered 3D previews in our shops nowadays.
  10. @Wahtah

    We send the data over to the 3D Preview in a compressed form. While its possible for a graphics expert to steal this data your typical user should not be able too. If you're generating custom geometry, then a user would also have to remove the custom pieces you added to get your source material.

    Once again, this is a pilot program. We're still looking at ways to improve this experience for all users.

  11. drloris
    drloris Well-Known Member
    I was thinking about this - because the preview display is just so nice, but it does look like a risk. Okay so they can't steal your assets, but they could get exactly what they wanted and buy it without markup, or particularly for things which come in linear sizes, fetch the lot and list them for sale (not necessarily on Shapeways).
    So it occurred to me is that it would be possible to make this harder. Here are some ideas I had:
    [list type=disc]
    [*] Subtly modify the design so the model isn't manifold.
    [*] Introduce voids inside the model, with numerous tiny holes to the outside - so it's all thin wall.
    [*] 3D Watermark : Add (or subtract) material to the design, eg put "SAMPLE" as an embossing or engraving somewhere unimportant. This would require input from the designer to make it work effectively.

    Incidentally, I've both filled in the form and since emailed, and haven't heard anything. Can I get on this pilot?
    Last edited: Oct 3, 2014
  12. Wahtah
    Wahtah Well-Known Member
    @ProfessorBeekums: Though I know the average person won't come into my house and steal my stuff, I still keep my doors locked to keep out the experts ;-)

    @drloris: Good point about buying without markup. Somehow mangling the 3d file seems risky to me...

    I don't think the 3D preview is that nice: it's an ugly grey thing with horrible lighting and awkward mouse control. Besides that it's device/browser dependant and sometimes buggy, see attachment. I've also had it with black spots and merged with a previous model.
    (For better lighting see the 3D preview in "My models", there the light comes from top left instead of straight on. Yeah, I made them do that :))

    A nice render in the selected material would sell much better in my opinion while also being more secure and compatible. But I guess it will be harder to implement?

  13. drloris
    drloris Well-Known Member
    Well, maybe you're right that the rendering quality of the preview isn't the best.
    What I particularly like is the ability to freely rotate the piece to get a good idea of its structure. I think that could be really useful on heavily customisable items.
    I (and from that I extrapolate other customers) will want to see the sides, back and top of the customised item, especially if there are modifications relating to it.

    The rotating display on normal items (as you said, a jpeg animation) is okay for some purposes, but nowhere near as functional as the free rotation. (And mouse control is worse.)

    I do prefer the offcentre lighting in the edit-model preview, but presumably theres nothing precluding that for the personalise preview. You are right that not displaying properly in some browsers is a problem.
  14. Wahtah
    Wahtah Well-Known Member
    Maybe the renders can include a mirror so we get to see the back side as well :)

    @BeekMeister: I know it's a pilot, but a pilot's for getting feedback right? I'm not trying to tell you what to do, but here's what you should do:
    Always display a render in the selected material, the designer can choose if he wants/needs to enable the 3d preview, with a nice "are you sure?" bit explaining the issues/risks...
    That and the price and dimensions and shopping cart thing...

    Have a nice weekend! :cool:
  15. drloris
    drloris Well-Known Member
    So I'm on the shapeJS co-creator pilot. Yay! (Thanks Beekey.)

    I've been working on ... a thing. Maybe it was a bit optimistic, but it runs fine in the ShapeJS preview window. Makes things which look like this:

    It took me a long time to work out that to get the "personalise" button one has to click on "Publish". Why? Well, because next to it the text says "*Publishing will make this product public and for sale" - which I'm obviously not ready to do yet. I don't think it's even true.

    So then I can't get the preview to work. It practically immediately reports "Could not generate product preview at this time, please try again".
    Having done some experimentation, I think what's happening is that my program is running into some sort of enforced resource limitation - like compilation time, or something like that. Initially I suspected the passed parameters, but I can hard-code those and makes no difference.
    I can comment out most of my code and it still balks. Delete the remmed code, and the program (what's left of it) will run.
    I don't know what the exact issue is - code size, compilation time, runtime or what, because the error message is always the same. It's *so* generic that for a while I thought the cocreator might need review and approval before functioning. So at the very least I suggest that you get on that. It's actually a real faff going back and forth between customisation and product view pages. It would be nice to have a test you can run in the customisation page.

    So I'm feeling a bit disappointed. It seems that this is why the examples consist of sizing a ring - that's all there's actually time or space to do. Is there any chance of extending that?
    If the issue is that you're worried customers will leave if computation time is long, there are things you can do to mitigate that. Simply saying how long they've got to wait (perhaps with a countdown timer) lets people know what to expect.

    Other potential issues I found on the interface which you may be interested in:
    A required field won't accept a value of "0". "0.0", yes, but not the single char.
    I couldn't get a text field to require exactly 1 character. It changes back to a min of 1 and a max of 2.

    You'd only mung the file sent to the client for display. You wouldn't modify the file you'd be printing from.
  16. Wahtah
    Wahtah Well-Known Member
    That's a very nice... thing :)
    But it's not going swimmingly, that's too bad...
    About the mangling: I understood it was only for the preview but I'm worried that any automated way of doing this will either be too simple so it can easily be reversed (we were assuming 3d expert pirates), or so complicated there is a good chance of it running into exceptions giving errors or visibly deformed previews. Only I didn't want to use so many words :)
  17. drloris
    drloris Well-Known Member
    Thanks. If it worked as a product, it would be at something like 2430 options.
    The programming went fine. I do really like the system.
    I found this thread from early this year : ShapeJS Gateway timeout. It's probably the same issue. The ShapeJS beta page now times out after 3 minutes (I checked with an infinite loop). The personalise product... well I was going to say that it timed out very quickly - but I just tried it again.
    The first time it timed out after 30 seconds or so. But subsequently, very quickly - perhaps 3 secs. Even after I'd changed the program.
    Presumably the system resets after a certain period. I can see that, with the "please try again" message causing some confusion for both designers and customers.

    Ah, okay.
    If each model were to add or subtract material in its own unique way (i.e. designer-defined 3d watermark), then at least the pirates wouldn't be able to completely automate the process.
    It's probably not worth putting any more into it than that, because a designer could recreate most items from the sale-friendly images. Even items with complex internal workings could be reverse-engineered with one purchase.
    Last edited: Oct 12, 2014
  18. Hi drloris,

    The creator on does have a timeout, but the ShapeJS cocreator does not. You've seemed to figure out that the cause isn't a timeout anyway :)

    If the script is crashing in 3 seconds, something else is happening. If you have the network tab open in Chrome/Firefox developer tools, you should see a number of requests asking for an update on the ShapeJS processing. The last one will contain a JSON blob with an error message (as well as a bunch of other details).

    If that isn't helpful, can you provide me the model id of your creator? I can attempt to reproduce and debug the issue.

  19. drloris
    drloris Well-Known Member
    Okay, I think there's a bug in the script processing in the shapeJS co-creator. I have cut down my script to a program which renders a single disc on, but crashes and reports the error on the ShapeJS cocreator. I don't know what the issue is exactly because small and apparently irrelevant changes (such as deleting a comment) can make it work again.
    Unless it's intermittent - but it seems to be consistent when I change things back.

    I'm going to send that program to you via PM.
    But I do wonder whether I'm missing something obvious.
  20. akoster
    akoster Member
    I have more or less the same problem on model ID 2612770: it renders correctly on the shapejs examples page but does not preview at all.

    Fiddler mentions the following remarks:

    {"status":"success","jobId":"2612770v0-fac9f031-4da3-4d42-bf89-29ebccd21924 "}
    {"status":"error","error":"job crashed"}
    Last edited: Oct 14, 2014