====== New management of position and rotations in OPF files ====== fc - sg - 9.1.2014 In AMAPstudio, plants can be stored in **opf files** (Open plant format, contain topology + geometry). These opf files can be exchanged by Xplo and Simeo. In some cases, vegetal scenes are created by adding such plants at different locations. The resulting plants can also be rotated (inclination, twist around the stem). ===== Centered opf ===== The rule is that the opf file always contains a plant located in a local frame (position 0, 0, 0), with no inclination nor twist: the opf contains a **centered plant**. ===== Opf files loading ===== Plants are loaded in ArchiTrees by the OPFLoader. // Load an opf file into an ArchiTree boolean computeCache = true; ArchiTree t = new OPFLoader(fileName, computeCache).load(); ===== Change the position and rotation of an ArchiTree ===== The ArchiTree can be moved / rotated by using the following method. // Change position and rotation of an ArchiTree t.setPositionAndRotation (x, y, z, inclinationAzimut, inclinationAngle, stemTwist, false); // copy: false // Get a copy of an ArchiTree at a different position and rotation ArchiTree copy = t.setPositionAndRotation (x, y, z, inclinationAzimut, inclinationAngle, stemTwist, true); // copy: true An ArchiTree can be reset at its **centered state** with the following method. // Reset the ArchiTree position and rotation t.resetPositionAndRotation (); ===== Saving an ArchiTree into a centered opf ===== When saving an ArchiTree to an opf file, the ArchiTree is automatically recentered by the OPFWriterV2: resetPositionAnRotation () is called if the ArchiTree was moved / rotated. This ensures the OPF files are always centered. If the ArchiTree to be saved was translated or rotated, the OPFWriterV2 detects it and resets the translations and rotations **in a copy** before writing on disk. **The original ArchiTree in memory is not reset**, it is the responsability of the user to reset it if needed with resetPositionAndRotation (). // Saving an ArchiTree into an opf file // OPFWriterV2 centers the ArchiTree if a move / rotation is detected new OPFWriterV2 (fileName).save (t); Vegetal scenes can be exchanged by Simeo and Xplo: all opf files are centered and the locations / rotations are explicitly noted in the ops file for each opf (unchanged).