Re: Generate terrain from a room in batch mode / Hijacking the “Generate 3D terrain from rooms…” plug-in
There's no need for that. The current way is sufficient. However, the numbers are not.The room’s native points follow the room move.
Therefore, if we want to store a given elevation for a point in the room , one solution is, for example, to modify the point tag by introducing a Z value, for example
<point x='3957.4912' y='32.531234' z='125.567'/>
This Z elevation is only used for "Generate 3d terrain" and is therefore an absolute elevation relative to the ground level (does not depend on the level where the room is located)
Code: Select all
<room id='room-c9710f39-3f72-4e5b-b04f-7a631eae29e3' level='level-dee204e2-b2ee-4226-86e8-a948f0498786' areaVisible='true' ceilingVisible='false' ceilingFlat='true'>
<property name='terrainElevationAt(3820.14,797.00)' value='96.168'/>
<property name='terrainElevationAt(3821.87,800.00)' value='96.668'/>
<property name='terrainElevationAt(3847.28,750.00)' value='127.755'/>
<property name='terrainElevationAt(3850.00,745.29)' value='130.027'/>
<property name='terrainElevationAt(3850.00,750.00)' value='130.124'/>
<property name='terrainElevationAt(3850.00,800.00)' value='119.72'/>
<property name='terrainElevationAt(3850.00,848.71)' value='94.035'/>
<property name='terrainElevationAt(3850.74,850.00)' value='93.698'/>
<property name='terrainElevationAt(3876.15,700.00)' value='141.752'/>
<property name='terrainElevationAt(3879.61,900.00)' value='72.723'/>
<property name='terrainElevationAt(3900.00,658.69)' value='133.93'/>
<property name='terrainElevationAt(3900.00,700.00)' value='157.147'/>
<property name='terrainElevationAt(3900.00,750.00)' value='168.241'/>
<property name='terrainElevationAt(3900.00,800.00)' value='153.723'/>
<property name='terrainElevationAt(3900.00,850.00)' value='119.72'/>
<property name='terrainElevationAt(3900.00,900.00)' value='78.924'/>
<property name='terrainElevationAt(3900.00,935.32)' value='53.183'/>
<property name='terrainElevationAt(3905.02,650.00)' value='130.785'/>
<property name='terrainElevationAt(3908.48,950.00)' value='45.196'/>
<property name='terrainElevationAt(3933.88,600.00)' value='112.458'/>
<property name='terrainElevationAt(3937.34,1000.00)' value='22.492'/>
<property name='terrainElevationAt(3950.00,1000.00)' value='22.612'/>
<property name='terrainElevationAt(3950.00,1021.92)' value='15.443'/>
<property name='terrainElevationAt(3950.00,572.09)' value='109.155'/>
<property name='terrainElevationAt(3950.00,600.00)' value='118.271'/>
<property name='terrainElevationAt(3950.00,650.00)' value='145.47'/>
<property name='terrainElevationAt(3950.00,700.00)' value='173.218'/>
<property name='terrainElevationAt(3950.00,750.00)' value='183.679'/>
<property name='terrainElevationAt(3950.00,800.00)' value='167.082'/>
<property name='terrainElevationAt(3950.00,850.00)' value='130.124'/>
<property name='terrainElevationAt(3950.00,900.00)' value='85.783'/>
<property name='terrainElevationAt(3950.00,950.00)' value='47.87'/>
<property name='terrainElevationAt(3962.75,550.00)' value='113.391'/>
<property name='terrainElevationAt(3966.21,1050.00)' value='8.963'/>
<property name='terrainElevationAt(3970.14,1056.81)' value='7.772'/>
<property name='terrainElevationAt(3974.08,1050.00)' value='8.868'/>
<property name='terrainElevationAt(3991.62,500.00)' value='147.729'/>
<property name='terrainElevationAt(4000.00,1000.00)' value='20.804'/>
<property name='terrainElevationAt(4000.00,1005.10)' value='19.093'/>
<property name='terrainElevationAt(4000.00,485.48)' value='162.761'/>
<property name='terrainElevationAt(4000.00,500.00)' value='154.766'/>
<property name='terrainElevationAt(4000.00,550.00)' value='132.356'/>
<property name='terrainElevationAt(4000.00,600.00)' value='128.206'/>
<property name='terrainElevationAt(4000.00,650.00)' value='142.999'/>
<property name='terrainElevationAt(4000.00,700.00)' value='163.031'/>
<property name='terrainElevationAt(4000.00,750.00)' value='170.233'/>
<property name='terrainElevationAt(4000.00,800.00)' value='153.723'/>
<property name='terrainElevationAt(4000.00,850.00)' value='119.72'/>
<property name='terrainElevationAt(4000.00,900.00)' value='78.924'/>
<property name='terrainElevationAt(4000.00,950.00)' value='44.042'/>
<property name='terrainElevationAt(4002.94,1000.00)' value='20.595'/>
<property name='terrainElevationAt(4020.49,450.00)' value='202.105'/>
<property name='terrainElevationAt(4031.81,950.00)' value='38.298'/>
<property name='terrainElevationAt(4049.35,400.00)' value='241.743'/>
<property name='terrainElevationAt(4050.00,398.88)' value='242.187'/>
<property name='terrainElevationAt(4050.00,400.00)' value='242.253'/>
<property name='terrainElevationAt(4050.00,450.00)' value='227.345'/>
<property name='terrainElevationAt(4050.00,500.00)' value='188.213'/>
<property name='terrainElevationAt(4050.00,550.00)' value='147.697'/>
<property name='terrainElevationAt(4050.00,600.00)' value='124.745'/>
<property name='terrainElevationAt(4050.00,650.00)' value='123.129'/>
<property name='terrainElevationAt(4050.00,700.00)' value='131.671'/>
<property name='terrainElevationAt(4050.00,750.00)' value='134.169'/>
<property name='terrainElevationAt(4050.00,800.00)' value='120.879'/>
<property name='terrainElevationAt(4050.00,850.00)' value='93.238'/>
<property name='terrainElevationAt(4050.00,900.00)' value='61.466'/>
<property name='terrainElevationAt(4050.00,918.50)' value='50.508'/>
<property name='terrainElevationAt(4060.68,900.00)' value='57.025'/>
<property name='terrainElevationAt(4078.22,350.00)' value='236.295'/>
<property name='terrainElevationAt(4089.55,850.00)' value='67.992'/>
<property name='terrainElevationAt(4100.00,312.28)' value='201.889'/>
<property name='terrainElevationAt(4100.00,350.00)' value='240.06'/>
<property name='terrainElevationAt(4100.00,400.00)' value='262.368'/>
<property name='terrainElevationAt(4100.00,450.00)' value='244.331'/>
<property name='terrainElevationAt(4100.00,500.00)' value='197.64'/>
<property name='terrainElevationAt(4100.00,550.00)' value='145.863'/>
<property name='terrainElevationAt(4100.00,600.00)' value='109.299'/>
<property name='terrainElevationAt(4100.00,650.00)' value='93.955'/>
<property name='terrainElevationAt(4100.00,700.00)' value='91.915'/>
<property name='terrainElevationAt(4100.00,750.00)' value='90.18'/>
<property name='terrainElevationAt(4100.00,800.00)' value='80.184'/>
<property name='terrainElevationAt(4100.00,831.89)' value='68.598'/>
<property name='terrainElevationAt(4107.09,300.00)' value='186.646'/>
<property name='terrainElevationAt(4118.41,800.00)' value='66.159'/>
<property name='terrainElevationAt(4120.14,660.23)' value='79.825'/>
<property name='terrainElevationAt(4120.14,797.00)' value='65.623'/>
<property name='terrainElevationAt(4120.63,650.00)' value='81.332'/>
<property name='terrainElevationAt(4123.03,600.00)' value='99.195'/>
<property name='terrainElevationAt(4123.14,800.00)' value='62.749'/>
<property name='terrainElevationAt(4125.42,550.00)' value='137.786'/>
<property name='terrainElevationAt(4127.82,500.00)' value='190.079'/>
<property name='terrainElevationAt(4130.22,450.00)' value='235.927'/>
<property name='terrainElevationAt(4132.61,400.00)' value='252.842'/>
<property name='terrainElevationAt(4135.01,350.00)' value='230.452'/>
<property name='terrainElevationAt(4135.96,250.00)' value='118.053'/>
<property name='terrainElevationAt(4137.40,300.00)' value='178.442'/>
<property name='terrainElevationAt(4139.80,250.00)' value='116.913'/>
<property name='terrainElevationAt(4140.14,242.75)' value='108.442'/>
<property name='terrainElevationAt(4150.00,677.47)' value='58.612'/>
<property name='terrainElevationAt(4150.00,700.00)' value='55.994'/>
<property name='terrainElevationAt(4150.00,750.00)' value='51.915'/>
<property name='terrainElevationAt(4150.00,800.00)' value='45.201'/>
<property name='terrainElevationAt(4150.00,826.86)' value='39.314'/>
<property name='terrainElevationAt(4173.14,850.00)' value='24.748'/>
<property name='terrainElevationAt(4189.03,700.00)' value='34.852'/>
<property name='terrainElevationAt(4200.00,706.33)' value='29.409'/>
<property name='terrainElevationAt(4200.00,750.00)' value='25.763'/>
<property name='terrainElevationAt(4200.00,800.00)' value='20.804'/>
<property name='terrainElevationAt(4200.00,850.00)' value='16.202'/>
<property name='terrainElevationAt(4200.00,876.86)' value='13.224'/>
<property name='terrainElevationAt(4223.14,900.00)' value='8.254'/>
<property name='terrainElevationAt(4250.00,735.20)' value='11.888'/>
<property name='terrainElevationAt(4250.00,750.00)' value='11.118'/>
<property name='terrainElevationAt(4250.00,800.00)' value='8.319'/>
<property name='terrainElevationAt(4250.00,850.00)' value='7.875'/>
<property name='terrainElevationAt(4250.00,900.00)' value='6.064'/>
<property name='terrainElevationAt(4250.00,926.86)' value='5.102'/>
<property name='terrainElevationAt(4273.14,950.00)' value='4.29'/>
<property name='terrainElevationAt(4275.63,750.00)' value='6.87'/>
<property name='terrainElevationAt(4300.00,764.07)' value='4.344'/>
<property name='terrainElevationAt(4300.00,800.00)' value='4.765'/>
<property name='terrainElevationAt(4300.00,850.00)' value='5.15'/>
<property name='terrainElevationAt(4300.00,900.00)' value='5.242'/>
<property name='terrainElevationAt(4300.00,950.00)' value='4.127'/>
<property name='terrainElevationAt(4300.00,976.86)' value='4.029'/>
<property name='terrainElevationAt(4323.14,1000.00)' value='5.078'/>
<property name='terrainElevationAt(4350.00,1000.00)' value='6.804'/>
<property name='terrainElevationAt(4350.00,1026.86)' value='6.073'/>
<property name='terrainElevationAt(4350.00,792.94)' value='3.25'/>
<property name='terrainElevationAt(4350.00,800.00)' value='3.493'/>
<property name='terrainElevationAt(4350.00,850.00)' value='5.299'/>
<property name='terrainElevationAt(4350.00,900.00)' value='6.804'/>
<property name='terrainElevationAt(4350.00,950.00)' value='7.395'/>
<property name='terrainElevationAt(4362.24,800.00)' value='3.928'/>
<property name='terrainElevationAt(4373.14,1050.00)' value='6.56'/>
<property name='terrainElevationAt(4400.00,1000.00)' value='10.321'/>
<property name='terrainElevationAt(4400.00,1050.00)' value='8.038'/>
<property name='terrainElevationAt(4400.00,1076.86)' value='6.56'/>
<property name='terrainElevationAt(4400.00,821.80)' value='6.486'/>
<property name='terrainElevationAt(4400.00,850.00)' value='8.038'/>
<property name='terrainElevationAt(4400.00,900.00)' value='10.321'/>
<property name='terrainElevationAt(4400.00,950.00)' value='11.218'/>
<property name='terrainElevationAt(4423.14,1100.00)' value='6.073'/>
<property name='terrainElevationAt(4448.84,850.00)' value='10.28'/>
<property name='terrainElevationAt(4450.00,1000.00)' value='13.252'/>
<property name='terrainElevationAt(4450.00,1050.00)' value='10.321'/>
<property name='terrainElevationAt(4450.00,1100.00)' value='6.804'/>
<property name='terrainElevationAt(4450.00,1126.86)' value='5.078'/>
<property name='terrainElevationAt(4450.00,850.67)' value='10.367'/>
<property name='terrainElevationAt(4450.00,900.00)' value='13.252'/>
<property name='terrainElevationAt(4450.00,950.00)' value='14.404'/>
<property name='terrainElevationAt(4473.14,1150.00)' value='4.029'/>
<property name='terrainElevationAt(4500.00,1000.00)' value='14.404'/>
<property name='terrainElevationAt(4500.00,1050.00)' value='11.218'/>
<property name='terrainElevationAt(4500.00,1100.00)' value='7.395'/>
<property name='terrainElevationAt(4500.00,1150.00)' value='4.127'/>
<property name='terrainElevationAt(4500.00,1176.86)' value='2.816'/>
<property name='terrainElevationAt(4500.00,879.54)' value='13.268'/>
<property name='terrainElevationAt(4500.00,900.00)' value='14.404'/>
<property name='terrainElevationAt(4500.00,950.00)' value='15.655'/>
<property name='terrainElevationAt(4509.05,1185.91)' value='2.442'/>
<property name='terrainElevationAt(4518.68,1150.00)' value='4.079'/>
<property name='terrainElevationAt(4532.07,1100.00)' value='7.146'/>
<property name='terrainElevationAt(4535.44,900.00)' value='13.813'/>
<property name='terrainElevationAt(4545.47,1050.00)' value='10.471'/>
<property name='terrainElevationAt(4550.00,1000.00)' value='13.252'/>
<property name='terrainElevationAt(4550.00,1033.09)' value='11.442'/>
<property name='terrainElevationAt(4550.00,908.41)' value='13.596'/>
<property name='terrainElevationAt(4550.00,950.00)' value='14.404'/>
<property name='terrainElevationAt(4558.87,1000.00)' value='12.832'/>
<property name='terrainElevationAt(4572.27,950.00)' value='13.154'/>
<property name='terrainElevationAt(4578.93,925.11)' value='12.459'/>
<property name='terrainGridSize' value='50.0'/>
<point x='4140.144' y='242.74615'/>
<point x='3820.144' y='797.00244'/>
<point x='3970.144' y='1056.81'/>
<point x='4120.144' y='797.00244'/>
<point x='4509.0527' y='1185.9111'/>
<point x='4578.934' y='925.11115'/>
<point x='4120.144' y='660.2286'/>
</room>Code: Select all
<property name='terrainElevationAt(4535.44,900.00)' value='13.813'/>Code: Select all
<property name='terrainElevationAt(4535.44,900.00,13.813'/>Code: Select all
<property name='terrainElevationAt' x='4535.44' y='900.00' z='13.813'/>Code: Select all
<property name='terrainElevationAt(4535.44,900.00)' value='13.813' locked='true'/>Definitely a bad solution and very bad programming practice. You never change a value you have to change back afterwards on an already known condition, you prevent a change using that condition in the first place. I don't see where you could get infinite loops, each point in the given radius is processed and a value is set. I haven't checked the source code but I don't think there's any looping to execute elevation changes.One solution could be (it's probably/certainly not the best): proceed as currently (without considering the Locks) and at the end check if a point elevation with a Z value has been modified , and if so, we simulate a complementary action on that point to return its elevation to its Z value (with the same parameters : radius of action, linearity, etc.). However, in this case, pay attention to infinite loops if two points with Z values are close together...