ComfyUI-ZeroShot-MTrans 使用教程

ComfyUI-ZeroShot-MTrans 使用教程

ComfyUI-ZeroShot-MTransZeST: Zero-Shot Material Transfer from a Single Image项目地址:https://gitcode.com/gh_mirrors/co/ComfyUI-ZeroShot-MTrans

本教程旨在引导您了解并使用 ComfyUI-ZeroShot-MTrans 开源项目,该项目实现了零样本材质转移功能,允许从单个图像中进行材质转换。以下是核心内容概览:

1. 项目目录结构及介绍

.
├── github/workflows           # 用于自动化流程的GitHub Actions配置文件
├── images                      # 包含示例图片或相关图像资源
├── gitignore                   # 忽略文件列表
├── LICENSE                     # 许可证文件,遵循Apache-2.0协议
├── README.md                   # 主要的项目说明文档,包含英文介绍
├── README_CN.md                # 中文版项目说明文档
├── ZeSTSimpleWorkflow.png      # 可能是工作流的示意图
├── __init__.py                 # Python包初始化文件
├── image.png                   # 可能的项目图标或示例图
├── pyproject.toml             # Python项目的元数据和依赖管理文件
├── requirements.txt            # 项目所需Python库的列表
├── zest.py                     # 核心功能实现文件
├── zest_workflow.json          # 工作流程相关的JSON配置文件

目录结构分析:

  • 核心代码: __init__.pyzest.py 含有项目的主要逻辑。
  • 配置文件: pyproject.tomlrequirements.txt 分别用于现代Python项目的构建配置和环境需求声明。
  • 文档: README.mdREADME_CN.md 提供了项目的详细介绍,其中README_CN.md专门面向中文用户。
  • 其他: 图像文件和工作流图帮助理解项目用途。

2. 项目的启动文件介绍

项目的核心不明确指定一个单一的“启动文件”,但结合ComfyUI的自定义节点特性,通常用户需要在ComfyUI环境中导入这个项目。虽然没有直接的命令行启动脚本,主要的交互点可能是通过ComfyUI界面加载__init__.py中定义的自定义节点或直接调用zest.py中的函数来开启材质转换过程。

为了使用此项目,您首先需要将仓库克隆到本地,并且确保您的ComfyUI环境已正确设置并可以安装额外的Python依赖(通过运行pip install -r requirements.txt)。

3. 项目的配置文件介绍

  • pyproject.toml: 此文件用于定义项目元数据,如项目名称、版本等,并通过[tool.poetry.dependencies]部分列出项目所需的第三方库。这是现代Python项目管理的重要组成部分。
  • requirements.txt: 列出了项目运行必需的所有Python库及其具体版本,用于快速搭建一致的开发或生产环境。
  • 潜在配置文件: 在更复杂的场景下,配置可能存储在特定的.json文件或环境变量中,但在提供的目录结构中并未直接指出这样的专用配置文件存在。zest_workflow.json可能是特定于工作流的配置,但具体作用需查看源码或项目文档进一步确认。

完成以上步骤后,您应该能够在ComfyUI环境中利用此插件执行零样本材质转移任务,享受其带来的便捷性和创新性。记得查阅项目README文件获取最新和详细的集成与使用指南。

ComfyUI-ZeroShot-MTransZeST: Zero-Shot Material Transfer from a Single Image项目地址:https://gitcode.com/gh_mirrors/co/ComfyUI-ZeroShot-MTrans

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
package com.blog.dragview; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.os.Bundle; import android.util.Log; import com.blog.R; import org.json.JSONArray; import org.json.JSONException; import java.util.List; public class MainActivity extends Activity{ private DrawingView _view; @Override protected void onCreate(Bundle savedInstanceState) { _view = new DrawingView(this); super.onCreate(savedInstanceState); setContentView(_view); Bitmap bmp1 = BitmapFactory.decodeResource(getResources(), R.drawable.hengzhegou); Bitmap bmp2 = BitmapFactory.decodeResource(getResources(),R.drawable.pie); CustomBitmap customBitmap1 = new CustomBitmap(bmp1); CustomBitmap customBitmap2 = new CustomBitmap(bmp2); customBitmap1.setId(1); customBitmap2.setId(2); if (getSavedMatrix(1) != null){ Log.e("tag", "matrix 1 is not null"); customBitmap1.setMatrix(getSavedMatrix(1)); } if (getSavedMatrix(2) != null){ Log.e("tag", "matrix 2 is not null"); customBitmap2.setMatrix(getSavedMatrix(2)); } _view.addBitmap(customBitmap1); _view.addBitmap(customBitmap2); } //����matrix private void saveMatrix(CustomBitmap customBitmap){ Log.e("tag", "save matrix" + customBitmap.getId()); SharedPreferences.Editor editor = getSharedPreferences("matrix", Context.MODE_PRIVATE).edit(); Matrix matrix = customBitmap.matrix; float[] values = new float[9]; matrix.getValues(values); JSONArray array = new JSONArray(); for (float value:values){ try { array.put(value); } catch (JSONException e) { e.printStackTrace(); } } editor.putString(String.valueOf(customBitmap.getId()), array.toString()); editor.commit(); Log.e("tag", "save matrix id:" + customBitmap.getId() + "---------"+values[Matrix.MPERSP_0] + " , " + values[Matrix.MPERSP_1] + " , " + values[Matrix.MPERSP_2] + " , " + values[Matrix.MSCALE_X] + " , " + values[Matrix.MSCALE_Y] + " , " + values[Matrix.MSKEW_X] + " , " + values[Matrix.MSKEW_Y] + " , " +values[Matrix.MTRANS_X] + " , " + values[Matrix.MTRANS_Y]); } //��ȡmatrix private Matrix getSavedMatrix(int id){ SharedPreferences sp = getSharedPreferences("matrix", Context.MODE_PRIVATE); String result = sp.getString(String.valueOf(id), null); if (result != null){ float[] values = new float[9]; Matrix matrix = new Matrix(); try { JSONArray array = new JSONArray(result); for (int i = 0; i < array.length(); i++) { values[i] = Float.valueOf(String.valueOf(array.getDouble(i))); } matrix.setValues(values); } catch (JSONException e) { e.printStackTrace(); } Log.e("tag", "get matrix id:" + id + "---------"+values[Matrix.MPERSP_0] + " , " + values[Matrix.MPERSP_1] + " , " + values[Matrix.MPERSP_2] + " , " + values[Matrix.MSCALE_X] + " , " + values[Matrix.MSCALE_Y] + " , " + values[Matrix.MSKEW_X] + " , " + values[Matrix.MSKEW_Y] + " , " +values[Matrix.MTRANS_X] + " , " + values[Matrix.MTRANS_Y]); return matrix ; } return null; } @Override public void finish() { List<CustomBitmap> list = _view.getViews(); for (CustomBitmap customBitmap:list){ saveMatrix(customBitmap); } super.finish(); } }
06-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈予恬Keene

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值