ARE_hfL3 发表于 2024-7-11 09:08:20

LCD疑问

shlcd下的main.js有一段控制LCD大小和位置的代码



const leftPos = getCubeVertices(, , , 0, 0, -45);
const rightPos = getCubeVertices([-0.645, 2.054, 0.562], [-0.833, 2.054, -0.562], [-0.739, 2.054, 0], 0, 0, 45);
let slotCfg = {
    "version": 1,
    "texSize": ,
    "slots": [
      {
            "name": "lcd_door_left",
            "texArea": ,
            "pos": [
                leftPos
            ],
            "offsets": [, , ]
      },
      {
            "name": "lcd_door_right",
            "texArea": ,
            "pos": [
                rightPos
            ],
            "offsets": [, , ]
      }
    ]
};


这里声明了LCD的大小及位置,通过资料能看出,通过显示屏工具类DisplayHelper,我们可以通过坐标转换告诉 NTE 应在哪个位置渲染 LCD

那有让LCD渲染器自己找门让NTE渲染的办法吗

MCWinBuild 发表于 2024-7-11 09:16:30

本帖最后由 MCWinBuild 于 2024-7-12 10:48 编辑

?没听懂
你说的是否是指让LCD自己找在哪里渲染自己?
我觉得不是吧,因为LCD的位置是固定在车厢的某处的,这里我想问一下LCD作者,一种列车多型号是否需要反复适配?比如S-Train和S-Train Mini(只是个可能不正确的例子,我没去找)两种车

这里我们请一下@Jeffreyg1228 :D

ARE_hfL3 发表于 2024-7-11 09:19:08

MCWinBuild 发表于 2024-7-11 09:16
?没听懂
您说的是否是指让LCD自己找在哪里渲染自己?
我觉得不是吧,因为LCD的位置是固定在车厢的某处的, ...

更重要的问题是:以SP1900small为例:相邻两扇门如果在同一车厢,间隔为2,但两车厢之间,间隔为7

MCWinBuild 发表于 2024-7-11 09:27:57

本帖最后由 MCWinBuild 于 2024-7-12 10:49 编辑

ARE_hfL3 发表于 2024-7-11 09:19
更重要的问题是:以SP1900small为例:相邻两扇门如果在同一车厢,间隔为2,但两车厢之间,间隔为7 ...

你是指图中的B吗?你具体的难点在哪?跨车厢LCD?LCD不能在这生成?

找作者把,我也不会(狗头保命

Harlotte 发表于 2024-7-11 10:01:08

可以的(?
但是这个lcd的角度、大小、位置每个车还是不一样的,所以说还是得给点自定义的信息

ARE_hfL3 发表于 2024-7-11 10:43:35

MCWinBuild 发表于 2024-7-11 09:27
您是指图中的B吗?您具体的难点在哪?跨车厢LCD?LCD不能在这生成?

据说各个LCD是等距的,所以是B

要什么名字 发表于 2024-7-11 11:09:26

ARE_hfL3 发表于 2024-7-11 09:19
更重要的问题是:以SP1900small为例:相邻两扇门如果在同一车厢,间隔为2,但两车厢之间,间隔为7 ...

车厢之间的间隔不会造成影响,这里的代码是写明在一节车厢内lcd屏幕的位置,原点位置是列车的中心,离地高 1m 处

MCWinBuild 发表于 2024-7-11 11:16:17

ARE_hfL3 发表于 2024-7-11 10:43
据说各个LCD是等距的,所以是B

能不能把LCD放在一个车厢的两个门中间,毕竟MTR车厢随你多少,是等长的?

ARE_hfL3 发表于 2024-7-11 14:03:30

要什么名字 发表于 2024-7-11 11:09
车厢之间的间隔不会造成影响,这里的代码是写明在一节车厢内lcd屏幕的位置,原点位置是列车的中心,离地 ...

所以你的意思是,LCD是按车厢内相对位置渲染?

MCWinBuild 发表于 2024-7-11 14:08:22

本帖最后由 MCWinBuild 于 2024-7-12 10:49 编辑

ARE_hfL3 发表于 2024-7-11 14:03
所以你的意思是,LCD是按车厢内相对位置渲染?

这里有一个移植教程
https://b23.tv/XMBqCBR

所以说,LCD的位置首先需要在Blockbench里预留一个空(从逻辑上来说肯定的),再改js(是这样的吧),大部分车厢因为是复制的,所以两个车厢间并不影响。
ps:如果我的侧线只有一节车厢怎么办:D,你的问题不就......

不知道您的难点在哪儿

Jeffreyg1228 发表于 2024-7-11 14:34:49

1. LCD 在每个车厢的渲染位置都是一模一样的,因此无需考虑车厢之间的间隔。
2. getCubeVertices 函数是将 BlockBench 坐标通过旋转变换转化成 NTE 需要的坐标。
3. 在一节车厢内,getCubeVertices 函数中填入的坐标是“基准”LCD 的坐标(如果模型含有多个 LCD 的话,任取);然后一个重要的参数是 slotCfg 中的 offsets,它表示相对于这个基准 LCD,车厢内所有LCD X、Y、Z 坐标的偏移量。X 正方向向左、Y 正方向向上、Z 正方向向后。
4. 在一节车厢里,LCD 可以不等距(同一高度),修改 offsets 内 Z 值即可。
5. LCD 不能找门,必须传入 LCD 所在位置(参考方块)的坐标。
6. LCD 可以放在任意位置。
7. 有关 slotCfg 的更多信息可以参考 https://www.zbx1425.cn/nautilus/mtr-nte/#/js-display-helper?id=%e6%98%be%e7%a4%ba%e5%b1%8f%e4%bd%8d%e7%bd%ae%e9%85%8d%e7%bd%ae
(个人站上 LCD 的教程还没有写完,计划本周内完成。)
页: [1]
查看完整版本: LCD疑问