feat(render): 实现PSD文件导入和多选支持功能
- 添加PSD文件解析和图层导入功能- 实现多选状态下网格选择和边界框绘制 - 增加虚线边框和多选操作手柄显示 - 支持多选状态下点精确检测算法 - 添加拖拽操作历史记录功能 - 实现模型部件唯一命名避免冲突- 增加纹理垂直翻转和像素数据转换- 支持可见PSD图层性和不透明度设置 - 添加模型状态调试打印功能 -优化网格包含点检测逻辑和性能 重要更新 - 支持多选图层 - 支持导入psd文件 - 支持撤回和重做操作
This commit is contained in:
@@ -10,6 +10,9 @@ import com.chuangzhou.vivid2D.render.model.util.Mesh2D;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.io.PrintStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 简单的测试示例:创建一个 Model2D,添加几层(部件),
|
||||
@@ -19,6 +22,8 @@ import java.awt.*;
|
||||
public class ModelLayerPanelTest {
|
||||
public static void main(String[] args) {
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
System.setOut(new PrintStream(System.out, true, StandardCharsets.UTF_8));
|
||||
System.setErr(new PrintStream(System.err, true, StandardCharsets.UTF_8));
|
||||
// 创建示例模型并添加图层
|
||||
Model2D model = new Model2D("示例模型");
|
||||
|
||||
@@ -92,13 +97,8 @@ public class ModelLayerPanelTest {
|
||||
JButton updateSelectionBtn = new JButton("更新选中部件");
|
||||
updateSelectionBtn.addActionListener(e -> {
|
||||
renderPanel.executeInGLContext(() -> {
|
||||
ModelPart selectedPart = renderPanel.getSelectedPart();
|
||||
transformPanel.setSelectedPart(selectedPart);
|
||||
if (selectedPart != null) {
|
||||
System.out.println("已选中部件: " + selectedPart.getName());
|
||||
} else {
|
||||
System.out.println("未选中任何部件");
|
||||
}
|
||||
List<ModelPart> selectedPart = renderPanel.getSelectedParts();
|
||||
transformPanel.setSelectedParts(selectedPart);
|
||||
});
|
||||
});
|
||||
bottom.add(updateSelectionBtn);
|
||||
@@ -113,8 +113,8 @@ public class ModelLayerPanelTest {
|
||||
System.out.println("点击了模型:" + mesh.getName() + ",模型坐标:" + modelX + ", " + modelY + ",屏幕坐标:" + screenX + ", " + screenY);
|
||||
|
||||
// 自动更新变换面板的选中部件
|
||||
ModelPart selectedPart = renderPanel.getSelectedPart();
|
||||
transformPanel.setSelectedPart(selectedPart);
|
||||
List<ModelPart> selectedPart = renderPanel.getSelectedParts();
|
||||
transformPanel.setSelectedParts(selectedPart);
|
||||
|
||||
// 切换到变换控制选项卡
|
||||
rightTabbedPane.setSelectedIndex(1);
|
||||
|
||||
Reference in New Issue
Block a user