0 Star 18 Fork 5

於随仙 / 原神自动追踪dll

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README
MIT

this Chinese, Click to English

GenshinImpact AutoTrack DLL

通过图像匹配算法,从原神客户端中获取角色在地图上的位置的DLL动态链接库

GitHub version Build status convention platform

介绍

目前支持任意分辨率,以及手柄模式,但暂不支持小地图设置的【跟随视角】仅支持【锁定方向】

地图目前支持区域

原神版本 地图区域 dll版本
1.0 蒙德 -
- 雪山 -
- 璃月 -
- 稻妻I -
- 稻妻II -
- 稻妻III(鹤观) -
- 稻妻IIII(渊下宫) -
- 璃月II(层岩) -
- 璃月III(地下层岩) -
3.0 须弥 6.1.51
3.1 须弥沙漠 6.4.17

支持 NVIDA GPU 图形计算加速 (远程编译不支持cuda,所以寄了)

各版本所支持的功能

版本 键盘模式 手柄模式 分辨率支持列表
6.4.x × 1920x1080
6.5.39 × 1920x1080, 2560x1440, 2560x1080
6.5.92 - - -
7.0.1 √(DX模式下不支持) 16:9 系列(但不包括4K及以上), 21:9 系列, 以及1920*1080以下的所有分辨率

新版本计划 7.1

  • 添加定位的惯性加速度导航算法(见 dev-inrtial-position 分支)
  • 添加定位的平滑过渡算法
  • 添加定位的自动校准算法
  • 完全支持手柄模式
  • 完全支持任意分辨率,4K及以上
  • 支持任意地图区域
  • 支持传入地图而非内嵌
  • 可选的嵌入预计算结果
  • 更高的匹配精度

7.0 接口修改方案

  • 重构接口,统一使用double作为浮点参数
    • bool GetTransform(float &x, float &y, float &a) -> bool GetTransform(double &x, double &y, double &a)
  • 重构接口,统一使用int作为接口返回值
    • bool GetPosition(double &x, double &y) -> int GetPosition(double &x, double &y)
    • bool GetDirection(double &a) -> int GetDirection(double &a)

如何使用

  1. 下载编译好的动态链接库。
  2. 装载动态链接库后,根据函数手册对相关函数进行调用或封装。
  3. 部分语言的调用可参见 impl 文件夹内的调用示例。
  4. 由于默认接口输出的是天理坐标模型的坐标,所以使用者需要根据自身地图坐标系与天理坐标模型之间的映射关系,设置世界中心以及缩放系数或者后期手动换算。

如何编译

  1. 环境需求,Visual Studio 2019 +Opencv 4.5.0 static lib zip

  2. 安装 Visual Studio 2019 +

  3. 创建 Opencv 库的环境变量,若不使用环境变量则需要手动修改 cvAutoTrack 项目的附加包含目录附加库目录

    $OpenCvDir = C:\projects\opencv\

  4. 下载 Opencv 4.5.0 static lib zip 并解压到任意目录

    7z x ./*.zip -y -o%OpenCvDir%

  5. Clone 代码

    Git Clone https://github.com/GengGode/GenshinImpact_AutoTrack_DLL

  6. 进入项目文件夹解压资源文件

    cd .\cvAutoTrack | 7z -x resource.zip

  7. 编译项目

    msbuild cvAutoTrack.sln

注意事项

  • 目前只编译了 Windows x64 平台上的动态链接库(.dll),对于 Windows x86 或其它平台,如 Linux 平台(.so),需要下载源代码另行编译。
  • Windows 规定 64位 进程/DLL与 32位 进程/DLL之间不能相互调用/加载,因此调用动态链接库前,请务必确保调用进程是 64位进程
  • 本项目借游戏画面的窗口截图进行图像处理算法以实现所有功能,其不会对游戏内存进行读写,因而不会有封号的风险,但效果也因此具备一定的局限。
  • 项目仅在有限的条件下测试过,如需排查错误,强烈建议按照以下描述进行环境配置。
    • 原神客户端 > 右上角派蒙 > 设置 > 抗锯齿,设置为 SMAA
    • 原神客户端 > 右上角派蒙 > 设置 > 其他 > 小地图锁定,设置为 锁定方向

对于开发者

项目结构

  • cvAutoTrack,dll工程
  • doc,文档及部分插图
  • impl,部分语言的调用示例
    • Cpp/TEST_cvAutoTrack_Cpp C++调用
    • CSharp/TEST_cvAutoTrack_CSharp C#调用
    • Python Python调用

函数目录( 详细文档 )

接口名称 接口功能
verison 获取Dll版本。
init 初始化运行环境。
uninit 卸载初始化时所占用的内存。
startServe (未完成)开始服务,开启循环检测线程。
stopServe (未完成)停止服务,停止循环检测线程。
... ...
SetUseBitbltCaptureMode 设置使用Bitblt截图,默认启用,速度较快,效果好,但某些系统不支持。
SetUseDx11CaptureMode 设置使用DirectX截图,效果较差,但支持win11及以上系统。
SetHandle 设置原神客户端的窗口句柄。
SetWorldCenter 设置映射目标地图坐标系的原点中心所在天理坐标模型中的坐标。
SetWorldScale 设置映射目标地图坐标系缩放系数与所在天理坐标模型缩放系数的的比值。
... ...
DebugCapture 获取本地视频中的UID、当前人物所在位置以及角度(箭头朝向)并保存至文本中。
... ...
GetTransformOfMap 获取当前人物所在位置、角度(箭头朝向)及所在地图区域并重映射坐标区域。
GetPositionOfMap 获取所在位置的所在地图区域并重映射坐标区域。
GetDirection 获取当前角度(箭头朝向)。
GetRotation 获取当前视角方位(视角朝向)。
GetUID 获取在屏幕右下角显示的玩家的UID。
... ...
GetInfoLoadPicture 获取本地图片中的UID、当前人物所在位置以及角度(箭头朝向)。
GetInfoLoadVideo 获取本地视频中的UID、当前人物所在位置以及角度(箭头朝向)并保存至文本中。
... ...
GetLastErr 获取最后设置的错误码。
GetLastErrMsg 获取最后设置的错误信息。

错误处理

天理坐标模型(待重写)

由于原神游戏中地图会不断扩展,而且不同的物理区块对应的地图贴图分辨率存在差异,所以直接根据贴图像素坐标系不可取,对未来的扩展不利。

所以目前根据原神2.0版本已有的地图区块,规划出了一个较为合理且易于扩展的地图模型,称为天理坐标模型。

之后所有关于地图坐标的接口都会默认以该坐标系输出。

目前模型以游戏中城镇位置的贴图缩放为标准缩放尺寸,即没有放大缩小的尺寸。

根据该尺寸将其他贴图一同缩放到相同比例下,最后拼合成为总图,此时的缩放系数即为天理坐标模型的缩放系数。

在该缩放系数下,原神2.1版本中,总图尺寸为 坐标范围 之后选择位于璃月的请仙典仪祭坛中心作为世界原点,即( 0 , 0 )

之后为了便于Opencv的坐标计算,设定为地图从蒙德到璃月,是横坐标正方向。

地图从璃月到稻妻,是纵坐标正方向。

坐标范围

渊下宫及地下层岩

该部分区域未来会重做坐标映射,暂时只做简单说明,即地图右上角为原点,其他照例。

即将更新

bool getAllInfo(double &x,double &y,double &a,int &uid);

获取所有信息,得到最新的状态数据

MIT License Copyright (c) 2021 GengGode Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

能够从原神中获取角色在地图上的位置,通过opencv的图像匹配算。 expand collapse
Cancel

Releases (1)

All

Contributors

All

Activities

Load More
can not load any more
C/C++
1
https://gitee.com/Yu_Sui_Xian/yuanshen-auto-tracking-dll.git
git@gitee.com:Yu_Sui_Xian/yuanshen-auto-tracking-dll.git
Yu_Sui_Xian
yuanshen-auto-tracking-dll
原神自动追踪dll
master

Search

53164aa7 5694891 3bd8fe86 5694891