Question

Align Polygon in 3D ?


Badge

Dear all,

I would like to rotate a rectangle in 3D for 30°. Background: I´ve got a PV-Panel flat on a surface and would like to rotate it in 3D facing the sun. So the lower axis is on the floor. Hope you understand :)

How is that possible? Which tool would you recomend?

Thank you!

 

Regards

Raphael


12 replies

Userlevel 4
Badge +26

For this I would use the '3DRotater'. It's a little tricky to get right (Documentation) and I don't think there are any good examples here on the knowledgebase.

 

 

You will likely need to use a Custom Rotation axis which should be the line bottom of the solar panel (if I understand correctly). The origin of rotation should be a point along this line and the Direction should be a vector realtive to 0,0,0.

 

You will have to play around probably a bit to get it right.

If you don't have a lot of places where you need to do this you might want to consider using a different tool to manually rotate it (e.g., Blender).

 

 

One tool which might help you extract the data you need is the CustomTransformer SurfaceNormalCalculator
Badge

For this I would use the '3DRotater'. It's a little tricky to get right (Documentation) and I don't think there are any good examples here on the knowledgebase.

 

 

You will likely need to use a Custom Rotation axis which should be the line bottom of the solar panel (if I understand correctly). The origin of rotation should be a point along this line and the Direction should be a vector realtive to 0,0,0.

 

You will have to play around probably a bit to get it right.

If you don't have a lot of places where you need to do this you might want to consider using a different tool to manually rotate it (e.g., Blender).

 

 

One tool which might help you extract the data you need is the CustomTransformer SurfaceNormalCalculator

Thank you.

Yes, you understanding right. May you have an idea how to set the vectors? Problem I have many rows of panels, so each row has it own "custom axis".

Userlevel 4
Badge +26

Thank you.

Yes, you understanding right. May you have an idea how to set the vectors? Problem I have many rows of panels, so each row has it own "custom axis".

So for each Panel/Feature that goes into the 3DRotater will need to have it's own axis (and maybe angle?)

 

You will have to first identify the lower line of the rectangle made sure that your rectangles have unique id's then use a Chopper to split up the rectangles into lines and for each Set of lines with the same ID take the one with the lowest minz value (use a bounds extractor) - If you have more than one line after this for each rectangle then also use the lowest maxz value. Now that you have your lowest lines you will want to take the center point (CenterPointExtractor) of the line. Then you'll need to extract the first vertex of the line (VertexExtractor, 0 index). You should now have two points on the bottom line of the rectangle.

 

You will need to use an ExpressionEvaluator to calculate the difference between your center point and first point. This should be your 'direction'. The center point should be the Origin. Once you have these you can pass them back to the rectangles with the featureMerger based on ID
Badge

Thanks again for the answer. Attached I put the Workspace. Maybe you can have a closer look please? Would be amazing. The angle should be always the same (20°). Thank you so much.2019-05-26_PV-Panels_in_3D_20°_South_CityGML.fmwData_FME.zip

Userlevel 4
Badge +26

Thanks again for the answer. Attached I put the Workspace. Maybe you can have a closer look please? Would be amazing. The angle should be always the same (20°). Thank you so much.2019-05-26_PV-Panels_in_3D_20°_South_CityGML.fmwData_FME.zip

Ok I made some changes and added some notes.

 

Hopefully you can see see how the surfaces have been rotated. For some reason I assumed that your surfaces would be on roofs so I suggested the z value, however, after looking at the data I see you meant the further south parts you wanted to have rotated. In this case we use the minimum y.

 

27790-2019-05-26-pv-panels-in-3d-20-south-citygml.fmw

 

 

This should see you right
Badge

Ok I made some changes and added some notes.

 

Hopefully you can see see how the surfaces have been rotated. For some reason I assumed that your surfaces would be on roofs so I suggested the z value, however, after looking at the data I see you meant the further south parts you wanted to have rotated. In this case we use the minimum y.

 

27790-2019-05-26-pv-panels-in-3d-20-south-citygml.fmw

 

 

This should see you right

Thank you so much. You did really help me out in my project. That kind of help is not self-evident. Thanks again and have a nice weekend.

Userlevel 4
Badge +26

Thank you so much. You did really help me out in my project. That kind of help is not self-evident. Thanks again and have a nice weekend.

No worries, good luck with the rest of the project

Badge +3

create the normal.

From panel center to sunlocation (not all the way of course!)

Is enough to create the attitude of the panel.

Badge

No worries, good luck with the rest of the project

Dear @virtualcitymatt,

 

the workbench is still fine, I need just to put following last details:

 

I need to put the gml_parent_id of the GroundSurface object on the gml_id of the associated Building object, so that the GroundSurface can be successfully written to the record.

Further, I need to make sure that a suitable geometry (e.g., Polygon, MultiSurface, ...) arrives at the GroundSurface Writer port.2019-07-08-pv-panels-in-3d-20-degrees-south-citygml.fmw

Is it possible to rotate the panels the other way around, because they are the wrong way round (upside down)?

 

Thank you!

 

Regards

 

Userlevel 4
Badge +26

Dear @virtualcitymatt,

 

the workbench is still fine, I need just to put following last details:

 

I need to put the gml_parent_id of the GroundSurface object on the gml_id of the associated Building object, so that the GroundSurface can be successfully written to the record.

Further, I need to make sure that a suitable geometry (e.g., Polygon, MultiSurface, ...) arrives at the GroundSurface Writer port.2019-07-08-pv-panels-in-3d-20-degrees-south-citygml.fmw

Is it possible to rotate the panels the other way around, because they are the wrong way round (upside down)?

 

Thank you!

 

Regards

 

Hi @raphael_

 

I took a quick look at your workspace. For the gml_parent_id check your attribute rename to make sure you are renaming the correct attribute. Are you sure the attribute name is OBJECTID, take another look at your input feature type. Perhaps you mean to use OID_?

 

If the surfaces are not oriented correctly consider Using an Orienter to flip the surfaces. Alternatively you could change the rotation angle in the Rotator. I would encourage experimentation here
Badge

Hi @raphael_

 

I took a quick look at your workspace. For the gml_parent_id check your attribute rename to make sure you are renaming the correct attribute. Are you sure the attribute name is OBJECTID, take another look at your input feature type. Perhaps you mean to use OID_?

 

If the surfaces are not oriented correctly consider Using an Orienter to flip the surfaces. Alternatively you could change the rotation angle in the Rotator. I would encourage experimentation here

Hi @virtualcitymatt

thanks for the quick reply. You are right, i meant the OID_. So what do I have to change to get my results?

 

I will experiment with the Orienter for change..

Userlevel 4
Badge +26

Hi @virtualcitymatt

thanks for the quick reply. You are right, i meant the OID_. So what do I have to change to get my results?

 

I will experiment with the Orienter for change..

Take a look at the AttributeRenamers in your workflow. Also you can search your whole workspace with CTRL-F. Look for OBJECTID to see where it is reference in the workspace

Reply