我目前正在使用MeshPhongMaterialThree.js提供的基本水创建一个简单的场景.我希望水材料具有Hard Light可在Photoshop等应用程序中找到的混合模式.如何Hard Light在右侧实现下面的混合模式?
上面图像的右半部分设置为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)我正在我的新 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) 我选择使用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) 在我复杂的 Vue 项目中,我收到此控制台警告:
[Vue warn]:避免依赖于枚举组件实例上的键的应用程序逻辑。在生产模式下,这些键将为空,以避免性能开销。
不幸的是,仅通过上述消息我无法找到此警告的原因。
我怎样才能找到这个警告的原因?
当我运行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) 我想迭代整数的字节:
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字节?
我试图创建一个立方体形状的地形,这将允许顶部平面上的那些顶点沿y轴移位.需要连接与顶部平面相邻的所有顶点.
以高效的方式,来自桌面或移动设备的用户输入将向上或向下移动它们.
根据我的阅读,最好将昂贵的操作卸载到GPU.我认为ShaderMaterial用a位移实现顶点位移attribute似乎是完美的拟合,直到我阅读以下内容:
从THREE r72开始,不再支持在ShaderMaterial中直接分配属性.必须使用BufferGeometry实例(而不是Geometry实例).
所以看来attribute用于我的Geometry是不可能的?
我沿着使用顶部平面位移的顶点尝试BufferGeometry在ShaderMaterial不过结果如下:
顶平面的顶点BufferGeometry没有连接到其他平面,Geometry与通过其mergeVertices方法连接的平面相反.据我所知,该方法不适用于BufferGeometry对象?
基本上是什么开始我的恐惧,不确定和怀疑Geometry是我读到的一个帖子 mrdoob.
我已经有了这方面的工作了Geometry,但想利用与GPU的ShaderMaterial的attributes,似乎只有支持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)我正在尝试使用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) 一个库向我提供了一个我想要匹配的深度嵌套的数据结构。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) 我试图通过将带有柏林噪声的置换贴图应用于球体来创建小行星。除了球体的两极扭曲之外,一切都按预期工作。看起来好像极点上的顶点是断开的。
前视图:看起来符合预期
俯视图:看起来很丑;-)

起初,我认为这与我的置换贴图以及我将其应用于球面这一事实有关,但如果我将其应用于立方体,则面之间也会存在间隙。
我不确定,我能做些什么来弥补这些差距。在后面的步骤中,置换贴图一般应该通过渲染到纹理并使用随机种子生成噪声,因此我不能使用 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) 我一直在试图建立以下配置的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)