小编Boo*_*lin的帖子

THREE.JS:在正确的 z 索引处渲染大而远的物体,并且仍然放大小物体

我有一个场景,我正在绘制(按比例)地球、月球和一些航天器。当月球被地球遮挡时,它不会消失,而是仍然可见(通过地球)。

从我的研究我发现问题的一部分是我的相机的近距设置太小了,如链接文章中所述,z 排序中近因舍入的小值无法处理非常远的物体。

这里的复杂性是,当相机放大时,我需要有细粒度的 z 索引,以查看航天器(与地球相比,半径最多为 61 米的物体,重量为 r =~ 6.5e+06 meters)。为了使月球和地球规模的物体以正确的顺序呈现,近处必须至少为 100,000 米,此时我无法看近处的物体。

一种解决方案是缩小比例以使用公里,但我不能失去这种精度,并且更喜欢使用米。

关于如何在正确的 z 索引处渲染非常大的远距离物体,同时保留缩放比例和放大小物体的能力的任何想法?

我的想法(我不知道如何实施):

  • 更改 z 缓冲区以包含更多值和更高的分辨率?
  • 将远处的物体添加到使用“farCamera”渲染的“farScene”中,该“farCamera”由特写镜头上使用的相同控件控制?

physics zbuffer three.js

5
推荐指数
1
解决办法
1851
查看次数

Typescript:typeof 的输出是否有字符串文字类型的联合?

我知道 typeof 的输出类型是字符串。

在打字稿中有这种模式,称为“字符串文字类型的联合”

export type Fruit = 'banana' | 'apple' | 'orange';
Run Code Online (Sandbox Code Playgroud)

问:任何库中是否存在可导入的字符串文字类型联合,允许确保字段只能是 typeof 运算符的可能输出?

伪代码示例:

import {JSType} from '@somelib/types'; // <--- what I want, this is a bogus type/lib

export class SomeClass {
    data: any;
    type: JSType;
    constructor (params) {
        this.data = params.data;
        this.type = typeof params.data;
    }
    render = () => {
        switch(this.type){
            case 'boolean':
                // return checkbox html component
            // more type cases
            default:
                // return input html component
        }
    }
}

Run Code Online (Sandbox Code Playgroud)

我可以手动创建我需要的类型,但我更愿意让比我更聪明的人来处理类型的维护,并且如果 JS/TS …

typescript

4
推荐指数
1
解决办法
676
查看次数

标签 统计

physics ×1

three.js ×1

typescript ×1

zbuffer ×1