mirror of
https://github.com/JannisX11/blockbench.git
synced 2025-02-17 16:20:13 +08:00
Proper aspect ratio for 3D brush outline
This commit is contained in:
parent
7c3339cd21
commit
fbafb3817d
@ -1039,14 +1039,17 @@ class Preview {
|
||||
}
|
||||
// Position
|
||||
let brush_coord = face.UVToLocal([x, y]);
|
||||
let brush_coord_difference = face.UVToLocal([x, y+1]);
|
||||
brush_coord_difference.sub(brush_coord);
|
||||
let brush_coord_difference_x = face.UVToLocal([x+1, y]);
|
||||
let brush_coord_difference_y = face.UVToLocal([x, y+1]);
|
||||
brush_coord_difference_x.sub(brush_coord);
|
||||
brush_coord_difference_y.sub(brush_coord);
|
||||
intersect.object.localToWorld(brush_coord);
|
||||
Canvas.brush_outline.position.copy(brush_coord);
|
||||
|
||||
//size
|
||||
let radius = BarItems.slider_brush_size.get() * 1.03 * brush_coord_difference.length();
|
||||
Canvas.brush_outline.scale.set(radius, radius, radius);
|
||||
let radius_x = BarItems.slider_brush_size.get() * 1.03 * brush_coord_difference_x.length();
|
||||
let radius_y = BarItems.slider_brush_size.get() * 1.03 * brush_coord_difference_y.length();
|
||||
Canvas.brush_outline.scale.set(radius_x, radius_y, radius_x);
|
||||
|
||||
// z fighting
|
||||
let z_fight_offset = Preview.selected.calculateControlScale(brush_coord) / 8;
|
||||
@ -1057,10 +1060,9 @@ class Preview {
|
||||
|
||||
Canvas.brush_outline.rotation.z = 0;
|
||||
let inverse = Reusable.quat2.copy(Canvas.brush_outline.quaternion).invert();
|
||||
brush_coord_difference.applyQuaternion(inverse);
|
||||
let rotation = Math.atan2(brush_coord_difference.x, -brush_coord_difference.y);
|
||||
brush_coord_difference_y.applyQuaternion(inverse);
|
||||
let rotation = Math.atan2(brush_coord_difference_y.x, -brush_coord_difference_y.y);
|
||||
Canvas.brush_outline.rotation.z = rotation;
|
||||
|
||||
|
||||
Canvas.brush_outline.quaternion.premultiply(world_quaternion);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user