|
|
HoneySelect2 VMD Play Plugin (HS2VMDPlayPlugin) (v0.3.4) 播放0 t: {. P$ V& V7 y
8 c* ~, x9 b6 S5 R& S3 r& v6 ^& ] E% s
MikuMikuDance 运动数据 (.vmd)。
! n$ J+ a, O+ a; L* z5 L% @并非所有动漫都可以工作,因为骨骼结构和 IK 机制非常不同。2 ?& D2 }5 T( N, R% d
7 _! e! j# c# o" ~
它仅适用于 StudioNEOV2。% h4 O! x& q" H" i
% k' U; `( X; k/ }0 v7 B% u1. 按 “Ctrl” + “Shift” + “V” 切换 GUI 显示(您可以在 BepInEx/config/HS2_VMDPlayPlugin.cfg 文件中更改键)。' Z; n+ I0 S- \* A1 y
2. 使用“<”和“>”按钮选择一个角色。
; U) S- k* t, ~# K3. 按下“关闭”按钮(它将切换到“打开”)以激活该功能。' j8 B' {- e9 w, x1 T& V) u2 J; @) I
- 现有的动漫将被停止。- v" b+ h1 ]5 R6 q4 ^
4. 直接在 VMD 旁边键入文件名,或单击“...” 单击该按钮以选择一个文件。
3 @" Z5 B% Q! D$ i+ [* {3 d如果文件路径包含 “;” 或使用“+”按钮合并来自多个 VMD 文件的动作。
" F8 c0 ~" ~+ @4 `7 i) J5 L5. (可选)如果有音频,请在 Sound 旁边键入文件名,或按“Load”(加载)按钮加载文件。; E" w& [. f& a( g( w0 g* P! r
6. 按下 VMD 上的“加载”按钮以加载 VMD 文件(以及声音文件,如果指定)。 )% t$ H+ X7 y( A b! I4 y9 w
7. (可选)如果摄像机运动位于单独的 VMD 文件中,请打开 Camera 选项卡,指定 VMD 文件,然后选择 Load (加载) 以导入它。) @( Q6 R8 [; n: B$ _, A
8. (可选)如果要指定循环音频等参数,请打开声音选项卡并更改设置。1 c' f6 e) W! O% W" _' z: l2 r
9. 按播放(全部)按钮播放动漫、相机和音频。
- G$ M+ }' ?! D' D10. (可选)更改屏幕底部的控制器选项。
0 b e# L6 a% K @7 g9 ~& U: Q/ s
2 K" n# e7 \. v. h' k如果要将动漫与多个角色同步,请使用 (All Chara) 右侧的 Play/Pause/Stop 按钮。- L+ l+ ^- I; W2 J7 j a
3 N! o' b: h6 r1 y. X& @* M) i
/ P& n' t' H. f& W% s$ g% Y根据 BepInEx/plugins/HS2_VMDPlayPlugin/FaceData.txt 中包含的人脸设置,捕获6 P" L. x# p) K; g
.vmd 文件中的面部表情操作参数,以进行面部表情操作。8 D) d5 W1 H% g) O7 v6 _* v$ N
请参阅自定义面部表情。, q3 P8 j2 d, l2 n: R
, \0 v7 \) B( r9 _1 c9 O+ t' m
o8 _+ [. X) |$ t先决条件: g5 ?3 }( e, k, j. p( \ |+ }
已安装 BepInEx v5.3 (https://github.com/BepInEx/BepInEx)。1 C/ }+ H, k5 M/ m
如果要写入场景数据,则需要 BepisPlugins 中包含的 ExtensibleSaveFormat 插件。 L3 |/ g& ?) x, w8 x( [
6 n G2 x! _0 L( O6 R+ C. @
' r& p3 e$ d# F+ I
[部署]3 T5 {7 `) z: m1 G3 _
将 BepInEx 文件夹复制到 HoneySelect2 部署目录。7 Z' v+ {# }) @; } Y* A4 N: z
文件夹结构应如下所示:
+ O& H! C c' h! X7 G
: v8 J# P; y$ c1 N! O(HoneySelect2 介绍目录) /. a& m3 Y/ T5 x; @- ]
StudioNEOV2_Data/
9 |6 Q0 g# J9 y# ^* A7 z" Q! e9 Z.... D# ]+ k7 p9 ~! w+ h( _
...
: |* O; K' o& UBepInEx/
; a% S$ }2 G& h5 [6 Z6 D, U: ^插件/, o( l/ G+ D+ t
HS2_VMDPlayPlugin/
1 Z* B8 R0 W7 m2 zHS2_VMDPlayPlugin.dll8 l7 p" F" w1 i5 A) {
MMD4URuntime.dll7 Z; Y* c9 }/ F' S, ?
FaceData_ sample.txt7 X$ d! \0 i% _ `+ Z4 H
config/8 A0 I) z+ \% r5 c. ~
HS2_VMDPlayPlugin.cfg7 k0 U7 g; c- D' {4 R& A
...。
% ~/ p* w, t6 i# m# JHoneySelect2.exe
6 T# f, f/ O6 F* \StudioNEOV2.exe" }7 X; X5 Y* q
$ q2 o# E2 K5 U3 P& ?: f( O, |: k% H7 _# G% l1 {
. {* q9 \& ?7 Q$ p卸载 删除
7 V5 G8 d" V5 R/ _以下目录和文件:
! j. ^3 ?$ j/ c& }1 V# QBepInEx/plugins/HS2_VMDPlayPlugin 目录! p( d2 F. S7 N* Z- C3 y: |
BepInEx/config/HS2_VMDPlayPlugin.cfg 文件
" Q2 j/ {5 E$ J' k4 G4 s2 N/ V, `- h% y
" d$ R! u6 I% [$ l! y% L[自定义面部表情]
# ^: s2 u4 o3 r% ^7 v. U7 Q$ m( R可以通过编辑 FaceData.txt 来添加和编辑面部变形。 日语 Morph 名称必须以 UTF-8 编码存储。
4 ?: ^( O& V0 }" x) Z$ G5 ^+ [0 }" r9 q' U( r
(语法)0 O- `' g1 C" @ @ V4 J2 T9 z
> < 完整 := <MORPH NAME> “=” <类型: 眉毛,眼睛,嘴>全部 “,” < 属性值> [“,” < 属性值> “,” <属性值> ....]7 c2 v0 _" ^1 f" m/ |$ A% k
! ~4 m, I+ A; a; a( }& o
< 属性值> :=5 @8 @7 {3 o, X1 Y5 B
“eyebrow” “:” <眉纹编号> : < 粗细 0-1.0> - 眉纹,如果指定了多个,则按粗细合并。
$ ~- ?4 A/ R2 }- C“eyeopen” “:” < 体重 0-1.0> - 眼睛张开度+ A) ]# K! b8 X! Q5 ^
“eye” “:” < 眼型数字> “:” < 体重 0-1.0> - 眼型
0 L2 ?- X2 @# g2 y“张口” “:” < 体重 0-1.0> - 张口度
% _& V. U1 W: b R" R( k2 \“mouth” “:” <口型编号> “:” < 体重 0-1.0> - 口型
% |! f8 ]1 e8 d9 \7 l“tongue” “:” “0” or “1” - 伸出舌头 (1) 不要 (0)
! J9 ^( i6 c* `& b3 [3 j2 z1 r( J0 P3 C# q! U+ C: r
(示例) wink=4 R' X) ~9 D, Y( N6 j% R& b o, _( I
EYE,eye:5:1: E9 S6 }* }2 t3 g; S4 p2 ?5 Z
mix=ALL,eyeopen:0.5,eye:12:0.4,eye:10:0.3,mouthopen:0.3,mouth:15:1,tongue:06 c6 U2 h' ~/ @# D7 b: D6 j& G
4 [! H1 U6 P7 P你可以指定 _DEFAULT_ 作为
, |5 ~" ~0 K! K z( T% t" Q. w特殊元素。 如果未在 VMD 端指定任何键,则此元素是默认表达式。
$ A" k5 h* C3 ?3 U5 S(如果 Model > UseDefaultFace 在设置中为 true)7 O0 h( C( N- Y8 b+ y
# |2 R+ F; P9 ?2 p5 G& H7 z- ?, `( C
写入场景
6 e" j7 x5 n4 ?1 N
; m3 C/ ]4 O$ q" ]' V将 VMD 设置信息写入和读取场景文件 (png)。; J T' \3 F) O6 ^% W
如果您不想编写它,请在 BepInEx/config/HS2_VMDPlayPlugin.cfg 文件中将以下行更改为 false。) B) ^3 H9 ]; d1 P. y' J
' k5 C# N) k% o; a+ Q) E: B
[保存]
/ f+ W# T, P# Z3 @7 J# LSaveInScene=true #これを 更改为
0 J6 H' Y. ^. \- j0 @0 B
9 y4 w7 B8 a6 ^ b- {* Y7 O
% j6 n6 g0 J; @false- a( V$ @3 o5 i) \/ s
[播放控制器]1 c( U+ W: h$ V$ U# e' w( ?
Show Config / Close Config - 打开(关闭)参数调整配置屏幕。9 p% K6 Y0 |/ G3 C* e8 g, i
播放/暂停/停止 - 立即播放/暂停/停止运动/音频/摄像机。5 U3 a: C; }1 J6 D
自动隐藏 - 如果选中,则在参数调整配置屏幕未打开且鼠标光标未位于控制器位置(距屏幕底部 40 像素)时自动隐藏控制器。0 P# ~3 _2 k8 f' Z
关闭 - 关闭控制器和参数调整配置屏幕。* ]; x* K4 l5 n1 U1 J
- y% j% l! K( A1 d6 O, ^) i7 O) w
1 ]4 F" d3 L3 I H4 w! e' j$ o$ @" X) |/ w
Tuning Parameters (优化参数) -' i' f# Z8 |* g( R$ Y; o1 B
模型的优化参数( V3 E+ {# ?6 U) C0 I8 q- A' X% q
CenterPos(y):更改 centerbone 的 Y 位置。 (扩展后添加)
- Z: _8 m; r MModel Scale(模型缩放):所有移动骨骼的 x、y 和 z 坐标的缩放(与骨骼的参考位置不同)Move' [# O2 u; N7 n2 H; _! Z" Z" J
(y)Scale(移动(y)Scale):所有移动骨骼的 y 坐标的缩放(在应用“模型缩放”(Model Scale)后添加): l* h7 n( X; W* I5 r
3 R4 T5 J9 k e5 m. E; W# w2 T. n
CenterBasePos:虚拟中心骨的 Y 位置(在 PMX 模型上假定的位置)/ f- `; G0 Z6 U' T2 f4 y
Shoulder/UpperArm/LowerArm Tilt:肩部、上臂和手臂的初始倾斜度。 将 T 姿势与 A 姿势 (MMD) 对齐的调整值。
1 S& v A- \! Y g0 X x
. p' @$ b5 S* i( ^如果要使运动更具动态性,请增加 Model Scale。
- o8 d+ u" P# l+ v4 o如果您的双腿因 IK 而伸展和颤抖,请减小模型比例。- O9 l! k/ v( z/ }
如果模型比例增加并且它被埋在地板下,请额外调整 CenterPos(y) 和 Model Scale(y)。" h) D( U* {4 W& x) g6 _
/ [2 A8 L# w: |8 d* \
在多个模型运动的情况下,最好对齐 Model Scale(模型比例)。
6 d% G% R* H8 C" y1 j4 F, `2 [" N9 v* ^9 q+ a# o3 h% i
[用于动作调整的参考模型输出]3 k$ W; P6 i8 |- J0 U& q
VMD Load Config(需要重新加载)右侧显示“保存”(用于多个模型的位置调整* I7 R3 b8 S# w9 k+ T6 c# c
/ b& k2 ?2 _0 _: d/ ~ c2 c1 A
! A% I! X# M$ p( |) 使用 “PMX” 按钮输出。
# S! X3 ~/ I5 p; C. G按下此按钮将使模型返回到其初始姿势 (A-stance),并以 PMX 文件格式输出骨骼配置。
$ z& `; e7 y+ {7 O9 F A! Y该文件在 BepInEx/plugins/HS2_VMDPlayPlugin/pmx/ 目录下输出时间戳。( a3 T: L& ^+ k' T% T# w: Z
内容仅为骨骼。 它不包含任何网格、纹理、变形等。
/ u) a M" f6 N7 T' i% \& c6 J它旨在与 VMD 大小调整 (VMD_sizing) 工具一起使用。
3 W" I& `. H% o7 K hShoulder Tilt 等值也使用设置的值。 但是,无论设置如何,模型比例都被视为 1.0。8 |) V' [) v! v7 U
因此,如果要使用输出模型的调整后的运动,请将 Model Scale 设置为 1.0 并使用它。, c/ s, a3 F2 I, `4 Z7 V7 w
. E; T! D+ }% {对于 Base Scale (基础缩放) 和 Global Scale (全局缩放),请使用配置的值。' q: U+ e* {( x7 ]
在默认的 BaseScale 0.095 和 Global Scale 10.0 的情况下,游戏中的 Y=10.0(大致是默认角色身体的中心)在 MMD 中大约是 Y=10.6。3 Q% A& D+ [3 `
(因为动作加载后乘以 0.95)
( p- N! x- l" h v" y
; ~1 A( a) U r8 J2 c' `8 O1 Q) l. I8 u& y" ~) i" l z
( Q! o E/ K, `) A2 G; f+ f g
[历史]: x2 J i) }) S1 x9 T3 C* c
-0.0.15 |- U. L7 }0 o6 W5 O* @" C/ V
初始版本
8 N) \4 }2 e. d( X5 A- 0.0.2 支持读取% G( M: G$ |1 _; [7 n
摄像机视角数据& X! p/ H% b* Q( U# w! s& |
-0.0.3 修复了9 ]3 Q; P' A" Z
GUI 关闭
3 ^: ]1 o2 T2 X- |) C& I时,使用鼠标进行正常摄像机操作可能无法工作的问题 -0.0.4
3 w) O0 T6 V/ L7 R# U修复了摄像机运动逻辑(旧逻辑是通过将 UnityCameraInterpolation 选项设置为 True 来指定的)将. ~" a+ J2 u+ ]0 v$ P
默认的 Shoulder Tilt 从 12 更改为 8(度)。6 Z3 q5 j4 S! a& o" B
-0.0.51 y6 F0 h8 B8 T+ x2 v! v3 `
修复了相机计算逻辑(删除了在有一帧差异的键之间禁用完成的逻辑)-1 N% e& P# f e( k
0.0.6 支持
3 W# k+ [, ]. H* F指定多个 VMD 文件(动作 + 面部表情等)(使用“+”按钮或“;” 带分离的直接输入)相机和角色动作的9 F+ j# ^, P+ Q5 j$ p9 r
动画计算逻辑已完全修改。 从使用 Unity 的 Animation 切换到 DOTween 自己的实现。
* P+ [- L3 E* {. s8 q5 `初始肩部、上臂和臂参数(模型 -> ShoulderTiltDefault、UpperArmTiltDefault、LowerArmTiltDefault)。
4 u ]" B+ B% h: ~2 f$ w2 K设置颈部旋转角度的补充参数 (Model - > NeckRotationScale)。, p( N. ]- {! x& t% k) y* u' D" J
添加了用于计算摄像机和整个角色位置的缩放选项 (System -> BaseScale。 它以与 GlobalScale 相同的方式应用于整个系统。 ) 修复了4 e; \5 ]% v6 d9 F8 P3 e
模型初始缩放计算中的错误(修复了始终应用字符高度cf_N_height的问题): o/ j% _! d$ z
-0.1.0 重构了与其他' d! b2 }& G# x; o
插件 b4 |/ k) G6 a( R0 C
共享代码 肩部取消 (Shoulder P/Shoulder C) 骨骼的临时实现" ~, `# |1 g# E
-0.1.1 修复了无法选择6 S: t2 h4 D- k H2 j
第二个和后续字符的问题。
: j, v% B6 T+ N- Z! D& d1 K-0.1.2 修复了快捷键设置中无法使用
1 \& S I7 [7 p2 T6 u# N* U大写字母的问题。
- d) {( F) g3 Z' \4 {IK 目标修复了曲调计算未初始化的问题(在最后一个键之后)修复了在切换# }4 y* H. i3 N1 e+ K6 ` I6 H1 b9 U
地图或加载场景时 UI 恢复为隐藏的问题。
5 I' M5 o- B A# N- a! t' \性能改进
' D0 U% Q4 Y3 g2 b3 @3 b! q-0.1.3 为3 r. \: ^ V4 |5 p: K
足部 IK 引入( z/ }/ f3 p" p& `
不同的算法 添加了用于调整加载场景时等待时间的参数 (System > LoadWaitFrames)可选
" s( s) ?+ a- p# a& G# o使用默认表达式 (_DEFAULT_) (Model > UseDefaultFace)。( k( z! x' k0 ~; W5 w6 ~
-0.1.4 支持在
6 D+ J6 L& {9 M5 e" c/ F+ sVMD 文件中读取 IK 开/关数据(模型 > UseIKDataInVMD)修复了) Q5 V$ j j2 l. ?. O
循环设置不起作用的问题。修复了' w! c+ E" ^. y2 A
插补曲线计算中的0 m# b' t* @; [. {8 {
错误 修复了( S1 Q. i6 D9 B
前束 IK 计算中的错误 -0.1.56 C8 t- j% v& W O- M' p' d# ^
修复了即使在关闭 VMD 后也无法更改面部表情的问题 修复了
& v0 Z. p5 n% f. d8 u* R& h在初始化和加载过程中
6 F7 S" \0 V; Q前束位置等下沉的问题。 修复了导致不包含面部表情数据的 VMD 文件无法加载的问题。修复了脚趾 IK 计算 2 -7 m) l2 m5 B& \' y
0.1.6
* m! R) q9 S! r( r中的问题 修复了在保存/读取未设置, B* g7 g9 K ?, p) W
-0.1.7 的数据时意外打开 VMD. L3 f; Q H8 T* y: X3 z
的问题
1 C5 _$ V% k, c0 }修复初始化模型( M2 o2 Q% t' |# j; l
时腿部/臀部/胸部位置的初始化逻辑 -0.1.8 新增选项 设置
1 J, Y0 z) l' y9 |4 ~" @MMD 相关文件参考目录 (MMDData > MMDDataBaseDir) GC+ |0 O. w4 O) X% ]: O
Alloc Memory 的性能调整 扭曲 (x-arm twist/x-hand-twist) 骨骼的临时实现2 k0 y/ j# c9 G( X
-0.1.96 H3 L% w& F% t4 P( B) H0 j
手腕角度校正逻辑修复
! O- M5 p: r- c. S, K O3 k拇指角度校正逻辑修复
3 u! Y( B# k( N+ E6 K-0.1.100 ]# g5 W$ @% l! m& T! [6 }
% ^. n) y2 V# B0 u3 }5 l; M
修复了无法关闭摄像头循环的问题。修复了在没有( U: c+ R z q5 o, ^$ d; k
thumb 0 键的 VMD 文件中拇指角度发生偏移的问题 修复了- q' w3 n# V/ p" Q* Q U
4 @9 e5 \1 |. m! @- D# J N. A6 `在未指定 MMDDataBaseDir 的情况下选择文件时初始文件夹设置不正确的问题。 修复面部表情逻辑
" H0 k# E9 H) Z, j2 Q4 }9 a. j9 f4 Z-0.1.11 修复扭骨不只在
, z5 A8 |' i: z& R5 g左手起作用的问题 修复
3 \6 X- W& T: l% E4 y+ r, S# O( m1 G# |5 @
扭骨的角度计算 -0.1.12 修复
* Q& R6 ?1 q! `. W
/ E) u2 _, d5 g9 x面部表情逻辑 修复了肩部取消角度(肩部 C)未反映的问题。0 w4 p. x$ Q( a$ m6 S& o4 s
-0.1.13 修复了9 W" _& s8 w* m% z& v8 p. Y
在保存/加载, |6 Z9 P. v8 X- S. f1 w
数据时,即使角色的 VMD 设置为关闭,面部表情也会被错误重置的问题。修复了扭曲骨骼的角度计算(轴限制)
5 b0 @- t# t5 ^8 z6 l7 o7 M' C- 0.2.00 _; L- p3 u/ ?1 }" m
修复扭曲骨骼角度计算(平滑)% {: P2 \6 U; r* s3 x7 }5 w
-0.2.1 在4 q! ]; e; d1 [6 m$ D$ T
文件选择对话框(左下角)中添加了排序按钮(名称、修改日期)) J. n( K) z+ }( J
添加一个按钮,以将摄像机的 ModelScale 反映到所有角色的 ModelScale,或将角色的最小 ModelScale 反映到摄像机的 ModelScale。在; X# p1 l J4 D- g
摄像机的 ModelScale 选项下 (>>all chara, <<min chara)' `+ X: q0 M$ }6 g; |
自动计算搜索栏的宽度(如果坐标不可见则拉伸)
0 U! `' M) x$ f' u+ k0 Y. r8 rUI > AutoControllerAutoAdjustControllerWidth 设置,可以禁用该设置修复了插补曲线计算
8 R6 X0 R& @/ ?0 r' Y-0.2.3 中的 o+ y& W4 ?$ h9 P
错误' b# i( A. [7 N7 v! E7 a9 T7 T
用于动态调整的参考模型(仅骨骼)输出(仅当 UseDOTweenAnimation=true 时)有关详细信息! P9 a i3 ]: P4 K: A0 M& s, |
,请参阅 [用于动态调整的参考模型输出]。
- F& T. P$ W) L1 C9 L+ D! t-0.2.4 修复了通过指定多个 VMD 文件保存的
+ R& ?0 @5 F) {* b2 Y场景数据无法正常加载的问题。修复了
1 B8 ~* A7 h) d! Y
/ O* L! L- V j1 \* [, b扭曲的骨骼角度(平滑)没有正确反映的问题。修复了) V3 Z3 G% Q* C0 X" Q2 Y7 w
+ V# x9 v* {6 t' m4 m+ @% x新增相机6 {6 `+ N) d" u ]8 x4 y, K
Y 轴旋转调整参数 -0.2.5 新增
1 S: C; l1 R" g9 A- U, b& f+ X播放、暂停、停止快捷键选项(所有角色、语音、相机)(所有默认值未指定) [% }4 i0 q9 H( N7 g
UI] UIKeyPlay, UIKeyPause、UIKeyStop
" j; N$ B+ y6 R3 o5 ]9 T仅面部运动应用选项(默认禁用,通过将 beta_EnableFaceOnly 更改为 true 来使用)
! y6 z' K# V2 T+ K-0.3.0 修复了角色在运动过程中
`% }% j( L O( v: j可能无意中模糊的问题。0 n/ I8 z9 d' g
添加了配置选项以提高性能(UseDirectTransformApply - 默认处于打开状态)
( ]) w) @# `) q8 e/ [9 G- q弃用基于 Unity 动画的逻辑并删除
" U$ U& j9 E! x9 y0 B( y, s9 n相关配置参数 删除了 UseDOTweenAnimation ( 始终为 true) 删除) _6 \9 w. |, c4 B& V0 p
了 UnityCameraInterpolation(始终为 false)删除
2 y, x- p& _1 m( B0 e了 UseOldFootIK(始终为 false),从过去的 IK 逻辑中的5 ^9 N# X2 q9 g4 v. v, ]* G
UI 中删除了相关参数 逻辑修改,在相机运动中不完成一帧中的关键帧切换(与 MMD 60fps 输出相同)[' M" F1 K/ R$ l2 G! p% Z) F
系统]通过将 JumpCameraAjacentFrame 选项更改为 false 来加载相机运动时启用完成。 -0.3.0
/ S5 H, R3 J+ p) D-0.3.1 修复了在停止运动时
3 Q$ y! R' g Q. p; ^执行足部 IK 计算的问题 修复了
( I9 ^! ]0 x6 l. N- Z% N1 T
/ O( u4 @- ^, O. y8 E! [4 F {8 j) {$ t肩部取消骨骼(肩部 C)位置不正确的问题 BepInEx 5.3 / BepisPlugins 15.4 / HoneySelect2 2020.08.14 补丁支持:默认启用
- R* x2 u. ]9 P9 y- D6 r“仅应用面部表情、动作/语音”选项(EnableFaceOnly 选项)
; O- H% P, s3 B" X, t-0.3.3 VMD& m8 o1 R9 ^; r: }
文件中的 IK 开/关修复了无法正确加载数据的问题。修复了处理
! J: U/ I4 R) c4 d肩部/肘部/手腕扭曲骨骼平滑时的错误 修复了
) {9 O7 t6 y4 }" {9 K0 {% P肢体骨骼被意外拉伸的问题 为$ D. r% h6 y; G! T* P
帧更新方法添加了替代选项设置(beta_AltUpdateOption:默认 False = 关闭)
1 u Z$ \( o8 O' j) p: I-0.3.4$ y& H; z+ @; |# R+ b- o* r
正确的
$ s& l; b: D! e4 @0 N: ]" D! L6 f
' i' v2 b) U$ Q( M比例计算错误1 w+ j, _0 f; P3 u& n- X
[无保证]$ B) \7 B' |, j8 R/ g
本软件按“原样”提供,不提供任何明示或/ N: x9 E8 X s8 a" b) y$ r
暗示的保证,
3 e5 |4 c+ v a+ R- }3 C包括但不限于适销性保证,2 ^: w9 T5 ^! R+ d5 d
适用于特定目的和非侵权。2 M' _; P: t1 z! G6 M6 }
在任何情况下,
( [# X4 j1 \" }) i7 j作者或版权所有者均不对任何索赔、损害或其他
7 x, o2 Y2 N, V* I- x责任负责。
& T, n7 ] p! B+ r# u1 \- x# T无论是在合同、侵权行为或其他诉讼中,由软件或) j+ L/ W) _4 l3 W9 A2 y
软件的使用或其他交易引起或3 c1 S" G* ?: `! V- b
与之相关。
; W/ \% \" t" q3 q |
|