… | |
… | |
221 | trans_add_shear ($om); |
221 | trans_add_shear ($om); |
222 | ($ot, [$om, $tag, $con]) |
222 | ($ot, [$om, $tag, $con]) |
223 | } |
223 | } |
224 | ); |
224 | ); |
225 | |
225 | |
|
|
226 | if ($cfg->{xoffs} || $cfg->{yoffs} || $cfg->{zoffs}) { |
|
|
227 | filter_tags ($tree, |
|
|
228 | transform => sub { |
|
|
229 | my ($tag, $con) = @_; |
|
|
230 | my $ot = 'transform'; |
|
|
231 | my $om = { |
|
|
232 | m00 => 1, m01 => 0, m02 => 0, m03 => $cfg->{xoffs}, |
|
|
233 | m10 => 0, m11 => 1, m12 => 0, m13 => $cfg->{yoffs}, |
|
|
234 | m20 => 0, m21 => 0, m22 => 1, m23 => $cfg->{zoffs}, |
|
|
235 | m30 => 0, m31 => 0, m32 => 0, m33 => 1, |
|
|
236 | }; |
|
|
237 | ($ot, [$om, $tag, $con]) |
|
|
238 | } |
|
|
239 | ); |
|
|
240 | }; |
|
|
241 | |
|
|
242 | |
226 | my ($w, $h) = ($cfg->{w}, $cfg->{h} || $cfg->{w}); |
243 | my ($w, $h) = ($cfg->{w}, $cfg->{h} || $cfg->{w}); |
227 | my $to = vector (0, 0, 0); |
244 | my $to = vector (0, 0, 0); |
228 | my $from = vector (0, 0, $cfg->{height}); |
245 | my $from = vector (0, 0, $cfg->{height}); |
229 | my $up = vector (0, 1, 0)->norm; |
246 | my $up = vector (0, 1, 0)->norm; |
230 | $up = $from + $up; |
247 | $up = $from + $up; |