My suggestion to set the bothsides to true is not to be used in the final version, it's just a way help you to build it up and solve each problems one at a time. Right now you have more issues, one of them was a proper flip of the faces and set the uv's in right sequence. See it as a debug. When the bothsides info would be correctly displayed, then you can go for step two, use the back faces only. Btw, using a grid like texture with colors, like a TV test image is also a faster way to see what's going wrong.

As about the hedges vertexes selection, the code is in there already.
Indeed an algo to fill a shape from points will be required.

Fabrice

On Sep 3, 2008, at 6:16 PM, Li wrote:

Thanks guys, your suggestions have been very useful.

Fabrice: Setting bothsides to true is necessary in order to obtain valid drawTriangles, and it is what im using. And Ive thought about your second suggestion and I will definitely implement it when I can, it could reduce cpu cost dramatically for shadows. It would involve an algorithm that would decide how to fill a vertex cloud...

Rob: Your two suggestions have been implemented succesfully. Ive used the virtual face's normal to determine if it should be rendered, and while doing this, I sorted the ones passed for rendering on their distance to the camera. Its been very effective.

See the new DEMO: http://www.piar.com.ar/li/away/reflections/sortingsolved/
The only problem that is left is determining in what order the 3 points are passed to the beginBitmapFill method. For this I believe I need to recognize which point is opposite to the hypotenuse of the triangle, and then somehow decide which is left to it and which is right to it... I have to pass p1, p2 and p3 in the right order in order to avoid scrambled faces. Do you know if there are any inherent conventions for this in the engine? Do you remember any part of the engine that handles anything similar to this?

On Wed, Sep 3, 2008 at 7:07 AM, Rob Bateman <[EMAIL PROTECTED]> wrote:
Hey Li


unfortunately i can't dive straight in here due to time constraints on other work, but i can point you in the direction of what you need

basically your talking about two things, rear face culling and z- sorting. both look out of whack in your reflection demo, so heres a couple of pointers as to how you could fix the problem.

a) face culling

the method away3d uses for this is to return the calculated area of a drawtriangle class (the 2d representation of a face in a view). However, this is not going to be easy to replicate in your demo as you are drawing directly from face to material! One way of seeing whether a face should be culled is calculating the dot product of the face normal to the camera axis. the face normal is easily obtained - there is a property called normal on the face class. tranforming it to world coordinates will require a similar set to the one you are doing in getVertexGlobalPosition, and finding the dot product between it and the camera vector (the world z axis of the camera object (or line of sight) is easily done with the number3d methods. if the product is positive, the face is facing the camera and should be drawn. otherwise it should be discarded.

b) z-sorting

currently this is not done at all in your render loop - basically you need to sort the drawing order of faces so that the ones furthest from the camera are drawn first, the next further drawn next and so on. you can get the global position of the vertices of each face by multiplying the scenetranform matrix of the object by the view matrix of the camera, then calulate a zdepth value by averaging their z-values. duplicate and sort the array based on this value, and then draw each face in the correct order.


sorry i can't be of more assistance right now - while the reflections you produce look great i am in no position to take this on myself atm, so i hope assistance in theory will be enough to point you in the right direction!

atb

Rob



On Wed, Sep 3, 2008 at 9:16 AM, Fabrice <[EMAIL PROTECTED]> wrote:
Hey Li,
The suggestion should work on the face issue...
Set the cube to bothsides:true if you see the projection ok, and you have set the faces in right sequence order, then you are good for next step.

The point I think here is that you try render faces that are not in the loop, at some angles, you would need to see faces not in the renderlist of the object.
In other words, you want to see the mirrored dark side of the moon.
So you will need here to write a class that is a flipped clone of the original mesh and use that info. This should also increase speed since the faces would be ready to be used at any time. They also would have a front property instead of back property automatically.

For the shadow or fills case, may be another concept worth a try:
Take a look at the way the outline works. So instead of drawing whole geometry face by face, just collect the vertexes of the hedges, project them, and read on Render the list you've composed to draw once the whole shadow shape into your source destination. This would ensure almost same draw speed for simple or complex objects... and since your cast image also is a rectangle, you even could skip some vertexes if their are not included in that rect. Note that I haven't read your code, so you might do it already.

Just thinking loud here :)

Fabrice

On Sep 3, 2008, at 5:38 AM, Li wrote:

Fabrice: Ive been working with your suggestion with no success. Tryedas hard as I can.... The problem seems to be reduced to finding which faces to draw on the reflective plane. These are not the same faces as the ones drawn on the "real" object.

Question: Somewhere in the engine something is deciding which faces will be drawn. I suppose it makes this decision based on the objects position, if it is bothsided, etc. We need to apply this same logic to the "virtual" object this time, created in the reflection, and simply decide which faces will be drawn. Who makes this decision? And how does it create the appropiate DrawTriangle once it has been passed for rendering?

On Tue, Sep 2, 2008 at 7:09 PM, Fabrice <[EMAIL PROTECTED]> wrote:

well, its because you reverse the face and scramble it,
to flip a face with vertexes [a b c] , make it [ b a c]

as about the uv's they also required to be ordered.

       uva = new UV(0, 0);//downleft
       uvb = new UV(0, 1 );//topleft
       uvc = new UV(1, 1);//topright
       uvd = new UV(1, 0);//downright

but shouldn't have to change them since you want reversed image, just flip the face and you will be fine, otherwize if needed flip order uvs on the exact same way as vertexes following the same sequence.

Take a look at Lathe class, many examples of combinations in there.

//My head is about to explode!!
Take a break, you've done enough for today :))

Fab





On Sep 2, 2008, at 11:08 PM, Li wrote:


Ok, Im completely stuck here. My head is about to explode!!

You can see the problem I have in this DEMO:
http://www.piar.com.ar/li/away/reflections/theproblem/
As I tryed to explain before, im having problems when redrawing the
reflected object's materials on the plane. With wirecolormaterials Im
only having trouble with sorting, but with moviematerials Im also
having trouble with the orientation of the vertices in the
beginbitmapfill method.

Ive made a big effort to make the source organized and have lots of
comments, so, here it is: 
http://www.piar.com.ar/li/away/reflections/theproblem/AdvancedReflections.zip

I believe that if someone familiar enough with the engine's core grabs
this, the problem would be resolved easily and quickly... A little
help and we're done!

On Sep 2, 3:30 pm, Li <[EMAIL PROTECTED]> wrote:
Thanks Peter, and everyone else for the positive replyes...

Here it is with an jpeg as 
bumpmap:http://www.piar.com.ar/li/away/reflections/bumpwithimage/

On Tue, Sep 2, 2008 at 3:07 PM, Rob Bateman <[EMAIL PROTECTED]> wrote:
very cool! love it.

Rob

On Tue, Sep 2, 2008 at 6:56 PM, Jensa <[EMAIL PROTECTED]> wrote:

Awesome job Li! Keep at it!

J

--
Rob Bateman
Flash Development & Consultancy

[EMAIL PROTECTED]
www.infiniteturtles.co.uk
www.away3d.com






--
Rob Bateman
Flash Development & Consultancy

[EMAIL PROTECTED]

www.infiniteturtles.co.uk
www.away3d.com


Reply via email to