Whilst building the Super Star Destroyer, a thought occurred to me: we have no way of specifying what faces of a brick (if any) required the slope texture. I see 2 solutions:
- Use the existing !COLOUR specification to set a new main color for linetypes that need a slope texture. The disadvantage to this being that it would break MLCad. Yet another reason why Micheal should open source the program.
- Make a new meta, something like !SLOPE_TEXTURE, that would go before the linetypes that need slope texture.
I agree but there's a big technical difference between texture mapping a picture and specifying that a certain quad/triangle should have a homogenous texture.
I suppose. How about !BUMPY since it's more of a hint to render with bump mapping than texture mapping?
I'm actually leaning toward option 1. MLCad is quickly becoming a millstone around our necks. At some point we need to stop worrying about breaking MLCad and I say the sooner the better.
The slopes aren't really a different color. They just have a different surface.
I agree. I guess I wasn't clear but option 1 is intended to be a new "main color" in the vein of colors 16 and 24.
I'm not sure I fully understand what you're advocating, so perhaps you could give more detail. Unless I misremember, there are varying degrees of "bumpy" in sloped LEGO bricks, so simply stating that something should be bumpy probably isn't a good solution.
Good point. I totally forgot about the fact that the slope roughness varies. In that case a meta command makes more sense.
It's for this reason I don't think anything should be done at an official level.
We already leave off some details (eg. hollow/filled underside studs), textures on some parts, smoothed edges on tiles/mini-slopes etc. and relegate any treatment of them to rendering part libraries. This, IMO, is how it should be.
As I see it LDraw format is there predominately as an instructional format.
But if you do decide to go with it I'd favour a leading meta. That way you're not breaking anything, a smart renderer can pick it up, and we don't have to duplicate every colour.
Tim
I think that we should be even more generic here than just surface texture,
and apply the usual mechanism you do in rendering: subsuming this as "material" :-)
just some quick thoughts for a downwards-compatible syntax extension:
0 !MATERIAL metal roughness=polished
...(lines of type 1,2,3 go here)
0 !MATERIAL metal roughness=mat
...(lines of type 1,2,3 go here)
0 !MATERIAL abs default
...(lines of type 1,2,3 go here)
0 !MATERIAL abs roughness=0.5
...(lines of type 1,2,3 go here)
0 !MATERIAL glass
0 // the previous line really means glass, not plastic, for example used in light bulbs
...(lines of type 1,2,3 go here)
0 !MATERIAL rubber
...(lines of type 1,2,3 go here)
0 !MATERIAL copper
...(lines of type 1,2,3 go here)
0 !MATERIAL thread
0 // no, not a computer thread. a real, physical thread. some LEGO models use them :-)
...(lines of type 1,2,3 go here)
0 !MATERIAL paper
0 // the previous line could be used for stickers :-))
etc.
please don't take this literally,
I am just posting this here to tickle your imagination ;-)
the !MATERIAL syntax would simply switch to some material mode until a different material instruction is encountered.
I like this thought.
But I'd suggest have a start and end and assume that all else is plain ABS. That way it goes back properly.
0 !MATERIAL rubber
etc.
0 !END MATERIAL
Tim
I like that turning on and off of material.
That way it works similar to the already existing
0 BFC NOCLIP
...
0 BFC CLIP
section.
However, what I dislike about your suggestion is the use of 2 separate keywords
!MATERIAL
!END
for the same thing. I would better prefer
0 !MATERIAL rubber
...
0 !MATERIAL end
, so the keyword !END is avoided. Or, to be more syntactically similar to the NOCLIP/CLIP sections, we could also do
0 !MATERIAL rubber
...
0 !NOMATERIAL
but I find that less elegant. My goal would be to use the same keyword for the begin and end statements.
I agree that if something like this were done, all lines should begin with !MATERIAL (or something similar; the point being, only introduce ONE new meta-command). In fact, I think !MATERIAL should require one of the following three sub-commands as the first word after !MATERIAL: BEGIN, END, and NEXT. The NEXT sub-command would mean that the material specification applies to the next line only. BEGIN and END produce a block of lines using a material.
Additionally, just as an aside, the spelling for the non-shiny finish is matte, not mat.