小编Jas*_*son的帖子

Three.js中的硬光材料混合模式?

我目前正在使用MeshPhongMaterialThree.js提供的基本水创建一个简单的场景.我希望水材料具有Hard Light可在Photoshop等应用程序中找到的混合模式.如何Hard Light在右侧实现下面的混合模式?

比较我拥有的和期望的最终结果 Photoshop的普通和硬光混合模式的比较

上面图像的右半部分设置为Hard LightPhotoshop.我试图Hard Light在Three.js中重新创建混合模式.

我遇到的一个主要是完全重新实现了MeshPhongMaterial片段和顶点着色器,但这需要一些时间,因为我对此很新.

在Three.js中为材质实现混合模式的方法是什么Hard Light

/* 
 * Scene config
 **/
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 0.1, 10000);
var renderer = new THREE.WebGLRenderer({
  antialias: true
});

renderer.setClearColor(0xffffff);
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

camera.position.set(0, 500, 1000);
camera.lookAt(scene.position);

/*
 * Scene lights
 **/

var spotlight = new THREE.SpotLight(0x999999, 0.1);
spotlight.castShadow = true;
spotlight.shadowDarkness = 0.75;
spotlight.position.set(0, 500, …
Run Code Online (Sandbox Code Playgroud)

javascript shader glsl webgl three.js

11
推荐指数
1
解决办法
1758
查看次数

无法为“ring v0.16.12”运行自定义构建命令

我正在我的新 Mac m1 上构建这个(https://github.com/solana-labs/solana),但失败了。

作者ring表示可以通过升级依赖项来修复它(https://github.com/briansmith/ring/issues/1163)。

我尝试添加ring = "0.16.19"cargo.toml失败了,因为this virtual manifest specifies a [dependencies] section, which is not allowed

我尝试在项目目录中搜索ring,但只在cargo.lock.

这似乎ring是 Solana 的依赖项。我是 Rust 新手,我不知道如何解决这个问题。

error: failed to run custom build command for `ring v0.16.12`

Caused by:
  process didn't exit successfully: `/Users/pt/code/solana/target/debug/build/ring-15a328b7ae57ee29/build-script-build` (exit code: 101)
  --- stdout
  CARGO: /Users/pt/.rustup/toolchains/stable-aarch64-apple-darwin/bin/cargo
  CARGO_CFG_TARGET_ARCH: aarch64
  CARGO_CFG_TARGET_ENDIAN: little
  CARGO_CFG_TARGET_ENV: 
  CARGO_CFG_TARGET_FAMILY: unix
  CARGO_CFG_TARGET_OS: macos
  CARGO_CFG_TARGET_POINTER_WIDTH: 64
  CARGO_CFG_TARGET_VENDOR: apple
  CARGO_CFG_UNIX: 
  CARGO_FEATURE_ALLOC: …
Run Code Online (Sandbox Code Playgroud)

rust blockchain rust-cargo apple-m1 solana

11
推荐指数
0
解决办法
8160
查看次数

跨浏览器SVG在响应或流畅的布局?

我选择使用Raphaëljavascript库来获得广泛的浏览器支持,但是我无法在任何浏览器中正常显示SVG,Chrome和Firefox除外.我一直在摸不着头脑,我很想听听如何让SVG在响应式布局中工作.

Chrome和Firefox 完全按照我的意愿显示SVG.它均匀地缩放,保持正确的宽高比及其父级给定宽度的百分比.

Internet Explorer保持正确的宽高比,但不能与其父级正确缩放.

Safari的父级宽度适当缩放,但高度不合适.相对于父容器的高度以某种方式设置为100%.

使用Javascript

var menu = Raphael('menu', '100%', '100%');

menu.setViewBox('0', '0', '50', '50', true);

var menu_bg = menu.rect(0,0, 50, 50);
    menu_bg.attr({
        id : 'menu_bg',
        'stroke-width' : '0',
        'fill' : '#000'
    });
Run Code Online (Sandbox Code Playgroud)

CSS

* {
    margin: 0;
    padding: 0;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}
html, body {
    height: 100%;
}
#menu { 
    width: 50%;
    background: #60F;
    padding: 2.5%;
}
#menu svg { 
    display: block;
    width: 100%;
    height: 100%;
    max-height: 100%;
}
#text { …
Run Code Online (Sandbox Code Playgroud)

javascript css svg fluid raphael

10
推荐指数
1
解决办法
4053
查看次数

避免依赖于枚举组件实例上的键的应用程序逻辑

在我复杂的 Vue 项目中,我收到此控制台警告:

[Vue warn]:避免依赖于枚举组件实例上的键的应用程序逻辑。在生产模式下,这些键将为空,以避免性能开销。

不幸的是,仅通过上述消息我无法找到此警告的原因。

我怎样才能找到这个警告的原因?

vue.js vuejs3

10
推荐指数
1
解决办法
2万
查看次数

Rust:根目录中没有“模块”

当我运行use crate::feed;时,src/cmdline.rs 我希望 import src/feed.rs,但事实并非如此。相反我得到,

error[E0432]: unresolved import `crate::feed`
 --> src/cmdline.rs:2:5
  |
2 | use crate::feed;
  |     ^^^^^^^^^^^ no `feed` in the root
Run Code Online (Sandbox Code Playgroud)

尽管事实src/feed.rs存在。但是,如果我恐慌并将其更改为mod feed;那么我会得到

error[E0583]: file not found for module `feed`
 --> src/cmdline.rs:2:1
  |
2 | mod feed;
  | ^^^^^^^^^
  |
  = help: to create the module `feed`, create file "src/cmdline/feed.rs"
Run Code Online (Sandbox Code Playgroud)

使用mod super::

error: expected identifier, found keyword `super`
 --> src/cmdline.rs:2:5
  |
2 | mod super::feed;
  |     ^^^^^ expected identifier, …
Run Code Online (Sandbox Code Playgroud)

import rust

8
推荐指数
2
解决办法
5825
查看次数

为什么 IntoIter 不拥有这些值?

我想迭代整数的字节:

use core::mem::size_of;

const SIZE: usize = size_of::<u64>();
    
fn main() {
    let x: u64 = 512;
    let mut buf: [u8; SIZE] = [0; SIZE];
    
    for (i, b) in x.to_be_bytes().into_iter().enumerate() {              
        buf[i] = b;
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器告诉我该行buf[i] = b;he expected `u8`, found `&u8` . 但为什么?

当我查看IntoIterator拥有的数组类型的特征的实现时[T; N],该into_iter()方法返回std::array::IntoIter<T, N>实现Iterator特征 where 的a type Item = T。不应该T评价到u8这里吗?

为什么迭代器返回&u8引用而不是拥有的u8字节?

types ownership rust

7
推荐指数
1
解决办法
354
查看次数

BoxBufferGeometry的焊缝边缘顶点

我试图创建一个立方体形状的地形,这将允许顶部平面上的那些顶点沿y轴移位.需要连接与顶部平面相邻的所有顶点.

以高效的方式,来自桌面或移动设备的用户输入将向上或向下移动它们.


根据我的阅读,最好将昂贵的操作卸载到GPU.我认为ShaderMaterial用a位移实现顶点位移attribute似乎是完美的拟合,直到我阅读以下内容:

从THREE r72开始,不再支持在ShaderMaterial中直接分配属性.必须使用BufferGeometry实例(而不是Geometry实例).

所以看来attribute用于我的Geometry是不可能的?

我沿着使用顶部平面位移的顶点尝试BufferGeometryShaderMaterial不过结果如下:

BufferGeometry和Geometry位移

顶平面的顶点BufferGeometry没有连接到其他平面,Geometry与通过其mergeVertices方法连接的平面相反.据我所知,该方法不适用于BufferGeometry对象?

基本上是什么开始我的恐惧,不确定和怀疑Geometry是我读到的一个帖子 mrdoob.

摘要

已经有了这方面的工作Geometry,但想利用与GPU的ShaderMaterialattributes,似乎只有支持BufferGeometry,如果它为移动提供了性能优势,如果 Geometry在将来可能会被废弃.


这是一个说明问题的小片段:

let winX = window.innerWidth;
let winY = window.innerHeight;

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(50, winX / winY, 0.1, 100);
      camera.position.set(2, 1, 2);
      camera.lookAt(scene.position); …
Run Code Online (Sandbox Code Playgroud)

glsl webgl three.js

5
推荐指数
0
解决办法
578
查看次数

如何使用 ndarray 从向量向量创建二维数组?

我正在尝试使用ndarray板条箱进行一些生物信息学,但我似乎无法动态创建矩阵。

我有布尔向量,我想将它们组合成一个二维数组。然而,尝试展平向量并使用并into_shape不能保留元素的正确顺序。

因此,我尝试创建一个空数组并将行连接到其中,但这给了我一个我无法理解的错误。我知道空数组没有相同的维度,但我找不到将空数组转换为正确的类型和维度的方法。

use ndarray::{concatenate, Array, Axis, Ix2};

fn main() {
    #[rustfmt::skip]
    let vector_of_vectors = vec![
        vec![true, false, true],
        vec![false, true, false],
    ];

    let mut matrix: Array<bool, Ix2> = ndarray::array![];
    for array in vector_of_vectors.iter() {
        matrix = concatenate![Axis(0), matrix, Array::from(array.clone())];
    }
}
Run Code Online (Sandbox Code Playgroud)
error[E0308]: mismatched types
  --> src/main.rs:12:18
   |
12 |         matrix = concatenate![Axis(0), matrix, Array::from(array.clone())];
   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected an array with a fixed size of 2 elements, found one with 1 element
   |
   = note: expected …
Run Code Online (Sandbox Code Playgroud)

arrays multidimensional-array rust

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

Rust 中的(嵌套)Vec 是否可以进行模式匹配?

一个库向我提供了一个我想要匹配的深度嵌套的数据结构。Vec它内部包含s 。我希望像注释掉的行之一一样起作用:

struct Foo {
    bar: Vec<bool>,
}

let foo = Foo {
    bar: vec![true, false],
};

match foo {
    // Foo{bar:[true,false]} => Ok(()), // expected an array or slice, found Vec<bool>
    // Foo{bar:&[true, false]} => Ok(()), // expected struct `Vec`, found reference
    // Foo{bar:vec![true,false]} => Ok(()), // Arbitrary expressions aren't allowed in patterns
    Foo { bar: v } => match v.as_slice() {
        [true, false] => Ok(()),
        _ => bail!("match failed!"),
    }, // Ugly when nesting deeply
    _ …
Run Code Online (Sandbox Code Playgroud)

vector pattern-matching rust

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

为什么我在 Three.js 中实现的置换贴图会断开球体极点处的顶点?

我试图通过将带有柏林噪声的置换贴图应用于球体来创建小行星。除了球体的两极扭曲之外,一切都按预期工作。看起来好像极点上的顶点是断开的。

前视图:看起来符合预期 小行星正面图 俯视图:看起来很丑;-) 小行星俯视图

起初,我认为这与我的置换贴图以及我将其应用于球面这一事实有关,但如果我将其应用于立方体,则面之间也会存在间隙。

我不确定,我能做些什么来弥补这些差距。在后面的步骤中,置换贴图一般应该通过渲染到纹理并使用随机种子生成噪声,因此我不能使用 Blender 或 Photoshop 等外部程序来修改置换贴图。我在着色器中做错了什么,还是这是“正常”行为?我能做些什么来避免这种情况吗?我读过立方体贴图。这可能是一个解决方案吗?如果是这样,是否有适用于 Three.js r57 或更高版本的工作示例?

这是我的着色器代码:

 vertexShader: [
    'uniform sampler2D displacementMap;',
    'varying vec3 vColor;',

    'void main() {',
        'vec4 newVertexPos;',
        'vec4 dv;',
        'float df;',

        'dv = texture2D( displacementMap, uv.xy );',
        'df = 0.30*dv.x + 0.59*dv.y + 0.11*dv.z;',
        '//newVertexPos = vec4(normal * df * 1.0, 0.0) + vec4( position, 1.0 );',
        'newVertexPos = vec4( normalize( position ) * df * 1.0 ) + vec4( position, 1.0 );', 
        'vColor = vec3( dv.x, dv.y, dv.z );',

        'gl_Position …
Run Code Online (Sandbox Code Playgroud)

shader three.js glsles

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

如何将远程板条箱的枚举序列化和反序列化为数字?

我一直在试图建立以下配置的serialport拉斯特箱用serde,这样我就可以直观地提供7在我的配置了data_bits,但它会被反序列化serialport::DataBits::Seven。不幸的是,当我希望它是数字 ( 7) 而不是字符串 ( seven) 时,它似乎失败了。

测试用例

货物.toml

[package]
name = "serde_error"
version = "0.1.0"
authors = ["Jason Miller"]
edition = "2018"

[dependencies]
serialport = "3.3.0"
serde = { version = "1.0", features = ["derive"] }
ron = "0.5.1"
Run Code Online (Sandbox Code Playgroud)

以下结果导致错误:

[package]
name = "serde_error"
version = "0.1.0"
authors = ["Jason Miller"]
edition = "2018"

[dependencies]
serialport = "3.3.0"
serde = { version = "1.0", features = ["derive"] …
Run Code Online (Sandbox Code Playgroud)

rust serde

2
推荐指数
1
解决办法
736
查看次数