Organelle Models

This is a semi-continuation of recent discussion here:

There appears to be some confusion regarding the requirements for organelle models. Most of the models we have can’t be added to the game for one main reason: the hexagon arrangement used in the editor hasn’t been taken into account. With the membrane close to completion, it might be a good idea to add organelle models alongside it, so this’ll need to be worked out fairly quickly.

Bear in mind much of this can be debated.

So how are organelles placed in the editor? We’ve decided on a system where the player builds a cell out of hexagons because it allows for simple mutation budgeting and organelle placement. Designing a membrane shape (as in Spore) is incredibly arbitrary, and it would be difficult to measure how much change happens within one generation.

First, the player adds cytoplasm hexes using a grid, making a contiguous shape. They then place organelles on top of this arrangement. Organelles come in two types: internal and external. Internal organelles have a set arrangement of hexagons which make up their shape. Internal organelles can be placed anywhere in a cell as long as they completely fit inside the cytoplasm and don’t overlap any other organelles (other than cytoplasm of course).

External organelles are placed on the edges of hexagons at a cell’s boundaries. External organelles can’t be placed on edges between hexagons, and if the player adds more cytoplasm to a grid space covering where an external organelles has already been placed, they’ll be charged as many Mutation Points as it would have cost to remove the organelle and add more cytoplasm, deleting the organelle in the process (possibly with a pop-up confirmation). There can be multiple external organelles attached to one hexagon, but only one may occupy each straight edge.

In-game, a membrane is drawn around the cytoplasm and responds dynamically to environmental distortion. The hexes representing organelles are also replaced with actual organelles. Internal types float around freely inside the cytoplasm, while external types are fixed to one point on the membrane (though this point can be affected by the stretching and distortion of sections around it).

The first thing for us to decide when making each organelle is its hex arrangement. I believe most of the essential ones have been decided on already, but we need to re-evaluate them anyway. The nucleus, endoplasmic reticulum and golgi apparatus are all fixed in position at the centre of the cell - they can’t be moved or removed.

Models need to fit within the hex arrangement of their respective cells. The nuclus/endoplasmic reticulum/golgi appratus combo can just be a single model, with each part overlapping the others. Here’s a simple example of how this would work (assume the formless blobs are replaced with proper models made by proper artists instead of me):

Vacuoles should come in multiple shapes and sizes, all made from arrangements of hexagons but retaining the same sort of appearance. It might even be possible for vacuoles to expand into the full hex size as they store more compounds, but this isn’t necessary and is up to the modelers (if indeed it’s viable at all).

External organelles are a little tougher to work with. They all have the same hex size (one edge of one hex) except cell walls, which will require completely different systems to display but aren’t a priority right now. They’re rendered on the membrane and animated. Here’s what it would look like using membrane and external organelle rendering:

Attaching multiple external organelles to the same hex on different edges might lead to problems in-game.

The membrane will be flexing quite a bit during collisions or movement, and external organelles will move with it (i.e. their attachment point will remain at the same point on the membrane, but that point can move). Again, overlaps of the rendered external organelles might become a problem. Perhaps external organelles shouldn’t have physics applied to them so they can overlap.

An overview of everything discussed above in handy picture format. The images are, in order: cytoplasm arrangement, organelle arrangement, rendered membrane and organelles, and an example of environmental distortion.

For the modelers’ benefit, here’s a list of what needs doing. They also need all their hex arrangements decide on.

High priority:

  • (Internal) Nucleus/Endoplasmic Reticulum/Golgi Apparatus
  • (Internal) Mitochondrion
  • (Internal) Vacuoles of various sizes
  • (Internal) Chloroplast
  • (External) Flagellum
  • (External) Agent Secretor

Low priority:

  • (Internal) Thermoplast
  • (Internal) Slime Gland
  • (Internal) Bioluminescent Organelle
  • (External) Cilia
  • (External) Predatory Pilus
  • (External) Engulfing Edge
  • (External) Lamellipodia
  • (External) Cell Wall

Information on each organelle: http://thrivegame.wikidot.com/gdd-microbe:gameplay#toc21

The agent secretor is in the game as an internal organelle, but eventually should be external. Come to think of it, the game doesn’t currently handle external organelles at all (even flagella are placed like internal organelles), so this might be needed first. Slime glands are basically just exploding vacuoles holding slime. Models are needed for all the same shapes of slime gland as vacuoles. Don’t worry about cell walls for now - they’re more related to the membrane.


All of the above should help get people up to speed with the system. I’ll now reply to @TheCreator’s points posted on GitHub as I was writing this:

@Oliveriver, very nice job on the images. Here are my 2 cents:

I always thought that the organelles in the cell would remain stationary, but my current membrane prototype does allow for them to move, so I guess that shouldn’t really be a problem to do. For collisions, we could let them flow on top of eachother without any collisions since our cell is actually 3-dimensional and the organelles aren’t all located in a plane. Another idea would be to use a simple rectangle bounding box for collisions—the organelles never really have to touch. Whichever method we chose, it should be easy to implement.

Here is a link from the old forum that I found that should help with the silhouettes:
http://i82.servimg.com/u/f82/14/12/40/46/cellsp11.png

We definitely need good models for the organelles (like the one we have for the toxin organelle currently); however the external organelles are a bit more complicated. The flagellum needs to be a static, tube-like model that will then be animated in the actual program (or we could try to make it completely procedural). I think it should be easy to place by simply attaching its origin to a point on the cells membrane. As for the cilia, their model can simply be attached to all the faces on the cell membrane, using a fresnel shader, so they are only noticible on the sides but not when directly viewed on from the top.

Moving organelles are just an aesthetic feature, and for now not necessary so it doesn’t matter much. Allowing overlaps for internal and external organelles would work, and as you say they’re in a 3D shape so it won’t matter too much. The only problem with that would be distinguishing between multiple organelles which have moved over each other when the player has paused the game and is editing each organelle’s compound priorities. A simple hitbox would fix that, as well as defining the clickable area for each.

I was looking for that image actually, thanks for finding it! Obviously the external organelles (secretor, flagellum and cilia) are redundant in internal form, and we’ll need many sizes of vacuole in the future.

Placing external organelles directly onto the membrane would simplify implementing them, but it would require a restructuring of the editor as in its current form the membrane isn’t rendered when placing organelles, only when changing appearance. This should be possible though, if a bit annoying. Maybe just split structure into internal and external structure (or “Structure” and “Surface”). Good idea for the cilia, although if we don’t restructure the editor they won’t be added to the entire membrane in one go. Instead they’ll be added in blobs around the size of the hex edges. If the editor is restructured to allow more intuitive external organelle placement, then I’d still go with adding it in patches around the edge rather than using a brush tool - this makes budgeting easier, and allows the player to click each discrete patch and upgrade it.

I am looking at pictures of Cilia on Google right now, and I noticed that in all of them Cilia is always located around the whole membrane, not just in patches. I was thinking that maybe we could have cilia be an upgradeable feature of the membrane? For example, you could upgrade it to create a cell wall or add cilia (which could be upgradeable further to create a higher density). I really think that we need to stay away from external organelles until we get internal ones working perfectly, but this is just my opinion. As for agent secretors, I was thinking that they could be internal organelles that have to be located on a hexagon that borders the cell membrane (which could easily be checked by seeing if a hexagon has less than 6 neighbors).

Sorry if what I said was confusing, but what I meant was that the player places the flagellum as you described, on edges of the hexagon, and afterwards they are repurposed to the closest point on the generated membrane.

Final question, why does the player first put down cytoplasm and only later the actual organelles? And if we are going to allow for empty cytoplasm hexes, how should this factor into the dynamic membrane? Should they be treated as invisible organelles, or should I just ignore them for my generation algorithm?

I think that would be a lot easier than localized cilia – a cell which develops cilia would just switch from a smooth (read: not fuzzy) shader to a fuzzy shader, a cell which develops a cell wall would (in addition to changing the shape of the membrane, most likely) switch to a different shader, etc. I like it.

[quote]I really think that we need to stay away from external organelles until we get internal ones working perfectly, but this is just my opinion.
[/quote]
Agreed.

We want the player to be able to plop cytoplasm hexes for one main reason: your cell might need more cytoplasm than it would have if every hex has an organelle. Conceptually, when you plop an organelle onto your cell in the editor, you’re also adding a bunch of cytoplasm around it. We need to know (at least approximately) how much cytoplasm a cell contains, which is why the concept currently calls for cytoplasm to be explicitly added. However, given the vagaries of a dynamic membrane, we might need to completely reconsider how we approach cytoplasm accounting, which is more or less a problem of determining the cell’s volume.

That means you can either ignore cytoplasm hexes entirely, or treat them just like organelles – those are functionally equivalent choices where the membrane is concerned, cuz the cytoplasm-organelle distinction is one we only need to make in the game logic.

Ah, ok. Yeah that was what I was imagining too, sorry for thinking you meant something else.

There are a couple of hiccups that system might encounter with the rest of the current concept. For one thing, it’s meant to be possible to upgrade flagella to cilia and vice versa (as well as cilia upgrading to lamellipodia). If the two were represented differently, this wouldn’t be possible. Also something to consider is how different types of covering would interact with each other. Cell walls would obviously prevent any other type of edge being applied (including flagella or pili), but would cilia and engulfing edges/flagella/pili be mutually exclusive?

Thinking about it, with cilia/cell walls being added in a completely different way if we change this system, there isn’t really any need for external organelles. Flagella, pili and agent secretors would be placed just like all other organelle types, although the editor would need a modification to allow the player to set the direction the external organelle points (possibly in the appearance tab if cilia and cell walls are now handled there, since the membrane and external organelles will be drawn on).

The only possible problem may be engulfing edges, but they could still be fixed too. They could be placed as full hexes, like flagella and pili, and would just apply the engulfing edge to the area of the membrane which covers them (they don’t need a 3D model or anything, just a different shader for that area).

Hey, excuse me for butting in here between your discussion, about which organelles are still needed?

On my MediaFire I found some old chloroplast, conjugal nuclei, mitochondria and thermoplast so far, albeit they all have like 1000 - 2000 tris.So I might better re make them with less polys. I’m gonna see what if I have something on my Dropbox as well.
Does the Mitochondria by @Poisonchocolate work?

There’s a list in he opening post. Models should work as long as they fit properly inside their respective hex arrangements, which may not have been completely decided yet.

I am still on vacation, so sorry if I take too long to reply to any posts. For inspiration to the modelers, I have compiled a list of the necessary organelles with their actual real-life photographs and a cool looking stock image.

Mitochondrion

Chloroplast

We currently have one from Chizu: http://i.imgur.com/ZClpC7Ib.jpg but it is untested (although I really like it)

Vacuole

As you can see it is more-or-less transparent and can be of any shape, not necessarily round. We already have one from tjblazer85: https://cloud.githubusercontent.com/assets/4619968/6841437/8fa63e48-d3c5-11e4-8505-b355da82e6b3.png but the material was not working correctly, so if anyone wants to fix it or make their own, go for it. We also need a lot of different vacuoles for all the different hex arrangements (AKA 2 hexes, three hexes forming a triangle, three hexes in a line, etc.)

Nucleus with endoplasmic reticulum

and the Golgi Apparatus

We need the nucleus, ER, and Golgi Complex to be one mesh that spawns 6 hexes (3 by 2). As you can see, the endoplasmic reticulum looks identical to the ER, and it is! They are made of the exact same material and have the exact same structure. As such, it would be impossible to tell them apart if they were all combined and coloring them different would just be unrealistic. I suggest that the person who decides to model this either makes 2 different meshes—Nucleus+ER in one and GA in the other—or simply makes one mesh with a gap between the Nucleus+ER and GA. Also, note that the half of the Endoplasmic Reticulum closer to the nucleus should have dots on it that symbolize ribosomes while the other half should be smooth and have “membrane bubbles” that are barely attached, if at all, to the ER.

Here is a render:

I assume we already have models for Flagella and Cilia so no need to make ones for those. The Agent Vacuole should look similar to the normal vacuole, but be of a different color. I also believe it should be attached to the cell membrane, but this is up for discussion. Here is the one from Tritium that we have so far:

As you can obviously see, the SEM photographs are all black-and-white, so you have a lot of artistic freedom when deciding how they should look. Here is a table of colors we are currently using in Thrive that you could use as a reference:

Finally, since we are on the topic of cells and their models, here is a video from http://joelotron.com/:
https://vimeo.com/123332533
This guy makes some seriously awesome cell and bacteria renders.

1 Like

Seeing as @TheCreator has listed proper organelles as one of his next steps in building the membrane, I think we should decide on the organelle sizes and let the 3D modelers create some organelles to fit inside them.

Here are my proposed sizes for the high priority organelles (those which we need relatively quickly):

The flagellum and agent secretor have small indicators on their hex representation for what edge their external parts attach to. In the editor, these edges have to be placed at the periphery of the microbe, and then the orientation of these parts can be modified once they’re clipped to the membrane.

Here are my proposed sizes for the low priority organelles:

Engulfing edge is a one hex organelle which has to be placed at the periphery of a microbe, but it creates an edge on the membrane which overlaps with adjacent hexes, creating a line of hexes and a contiguous edge along one part of the microbe’s membrane. Cell wall, cilia and lamellipodia are all periphery organelles (changed from the opening post), so consist of a shader applied to the whole microbe. They come in increasing densities when upgraded, so upgraded cilia will have more cilia per area, and upgraded cell walls will be thicker and restrict the membrane more.

@Chizu_Nordenstam do you think you’d be able to create some organelles (or use existing ones) to fit inside the hex arrangements above?

1 Like

I think the organelles are a bit large, these are my suggestions.

Mitochondria should be 1 hex. They can appear in very large quantities in some cells and two hexes is a lot of space. There are a lot of diagrams online with different cells have different sized mitochondria relative to their nucleus, but they are generally better represented by 1 hex.

Chloroplasts should be 2 hexes. They’re just a bit bigger than a mitochondrion but not considerably so. And if we’re assuming thermoplasts would be structured similarly I think they should be 2 hexes too.

I think ideally placing vacuoles should be like placing cells, you add them one hex at a time and then they render into the shape you made. However since we don’t have that added in yet it’s a good idea to just have a couple different shapes available.

Shouldn’t the slime gland be the agent gland?

Note: I feel like the bioluminescent organelle is too large as well, maybe 3 hexes?

Idea time: what if we used metaballs for procedural vacuoles? You place a hex at a time and if you have two together they merge into one.

Working on it Oliver.

About the bioluminiscent organelle, how is it supposed to look? Didn’t really get anything specific from a quick Google search.

And I think TheCreator’s idea is interesting, since the vacuole’s a simple shape anyways. Though, I wonder if we could just use deform on the vacuole model to shape it into different forms? (for example if it’s 2 hexes, then it’d be more elliptic?)
EDIT: Though from looking at the image in Nick’s post above, the vacuole there doesn’t look to be so round, there it looks more like something that’d rather be done with metaballs, as TheCreator proposed?

I like it!

That was the original plan for the membrane, which patowen gave up on as he couldn’t get the surface looking as un-lumpy as he liked. That shouldn’t be a problem for the vacuoles though. What might be a problem is that metaball-generation eats a pretty big chunk of memory. We could do some precomputation though, for all the possible hex-connectivity patterns, if that’s a problem.

@Moopli, is there some code we could reuse for that?

The sizes were mostly based on ~sciocont’s original plans for organelles, but I agree that the mitochondria, chloroplast and thermoplast should be made smaller. The slime gland is an agent vacuole, just a specialised version which functions differently to a normal vacuole. Structurally it shouldn’t be different from a normal vacuole, but they might require different visuals (slime glands need to burst and regenerate, for instance). The bioluminescent organelle should probably be smaller, but in retrospect three hexes wouldn’t really work symmetry-wise, as you can’t create an arrangement of them which is symmetrical down the middle and stays in the same hex grid as all the others. Instead it’s now only one hex in size, which might be a bit small but works as a point of light.

Anyway, here’s the new list of organelle sizes:

Since they’re unlocked by assimilating bacteria, I’d imagine something like this:

But really you have creative freedom over it, so long as it fits within the hex and emits light.

Good idea! I think that was the plan for vacuoles at some point, but it just never got discussed again so was forgotten. Patowen’s code is linked from this issue: Design and implement a dynamic membrane rendering around microbes · Issue #115 · Revolutionary-Games/Thrive · GitHub

Unfortunately we’ll have to create a way to allow distinction between different vacuoles. If two vacuoles are created but they’re adjacent to each other, this system would count them as the same one. Perhaps you could click and drag to create or edit vacuoles?

Aren’t all vacuoles the same? I didn’t think we had vacuoles for different compounds?

Anyways those sizes look good.

It’s only different for slime, because it bursts on contact with an enemy. Storing slime in a vacuole turns it into a slime gland.

(At least, this is what’s in the current concept)

Hey Guys! My exams are done and I see that we have a list of things to do, currently I’m working on a Mitochondria model. I was hoping someone could show me how to test the model in blender2ogre as to avoid any glitches with the model not looking right. Oh thanks to Oliveriver for helping setup my account on the new forums!

EDIT:
Here’s a few renders:

Low-Poly Count:


High-Poly Count:

What do you guys think?

The quality is very good, but the shape is not very accurate.

From the picture, you can see that a mitochondrion is much more narrow and elongated, and on the inside it has thinner lobes that are stacked in a greater quantity. However as I said the quality is very good, you got the textures and the shading just right, maybe just change the colours though.

Thanks for the feedback NickTheNick! I was supposed to make the Mitochondria elongated like the picture, I actually used the ones posted earlier in this thread, but I saw that in the latest Organelle size chart said that it’s supposed to be able to fit in one hex so I compressed it a bit. I’ll work on it again, with the changes you suggested. I’ll make three versions with different colors so we can choose which colors look better later.

You don’t need to fit it to the shape of a hex, it could be made like the shape in the picture above, and then just scaled down to fit in the hex.