Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Diorama renderer #2499

Merged
merged 30 commits into from
Mar 4, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 30 additions & 5 deletions diorama.js
Original file line number Diff line number Diff line change
Expand Up @@ -662,7 +662,7 @@ sideScene.add(glyphMesh);
sideScene.add(outlineMesh);
sideScene.add(labelMesh);
sideScene.add(textObject);
const _addPreviewLights = scene => {
/* const _addPreviewLights = scene => {
const ambientLight = new THREE.AmbientLight(0xffffff, 2);
scene.add(ambientLight);

Expand All @@ -671,7 +671,19 @@ const _addPreviewLights = scene => {
directionalLight.updateMatrixWorld();
scene.add(directionalLight);
};
_addPreviewLights(sideScene);
_addPreviewLights(sideScene); */
const autoLights = (() => {
const ambientLight = new THREE.AmbientLight(0xffffff, 2);

const directionalLight = new THREE.DirectionalLight(0xffffff, 2);
directionalLight.position.set(1, 2, 3);
directionalLight.updateMatrixWorld();

return [
ambientLight,
directionalLight,
];
})();
/* let sideSceneCompiled = false;
const _ensureSideSceneCompiled = () => {
if (!sideSceneCompiled) {
Expand Down Expand Up @@ -705,6 +717,7 @@ const createPlayerDiorama = ({
canvas = null,
objects = [],
target = null,
lights = true,
label = null,
outline = false,
lightningBackground = false,
Expand All @@ -716,6 +729,8 @@ const createPlayerDiorama = ({

const {devicePixelRatio: pixelRatio} = window;

// const renderer = getRenderer();

let locallyOwnedCanvas;
if (canvas) {
locallyOwnedCanvas = null;
Expand Down Expand Up @@ -807,6 +822,11 @@ const createPlayerDiorama = ({
for (const object of objects) {
scene.add(object);
}
if (lights) {
for (const autoLight of autoLights) {
scene.add(autoLight);
}
}
};

// push old state
Expand All @@ -828,6 +848,11 @@ const createPlayerDiorama = ({
}
}
}
if (lights) {
for (const autoLight of autoLights) {
autoLight.parent.remove(autoLight);
}
}
};
const oldRenderTarget = renderer.getRenderTarget();
const oldViewport = renderer.getViewport(localVector4D);
Expand Down Expand Up @@ -972,13 +997,13 @@ const createPlayerDiorama = ({
const compile = () => {
diorama.triggerLoad();
postProcessing.addEventListener('update', recompile);
} */
/* if (player.avatar) {
}
if (player.avatar) {
compile();
} else {
function avatarchange() {
if (player.avatar) {
// compile();
compile();
player.removeEventListener('avatarchange', avatarchange);
}
}
Expand Down
30 changes: 18 additions & 12 deletions io-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -684,17 +684,21 @@ const _updateMouseMovement = e => {
const _getMouseRaycaster = (e, raycaster) => {
const {clientX, clientY} = e;
const renderer = getRenderer();
renderer.getSize(localVector2D2);
localVector2D.set(
(clientX / localVector2D2.x) * 2 - 1,
-(clientY / localVector2D2.y) * 2 + 1
);
if (
localVector2D.x >= -1 && localVector2D.x <= 1 &&
localVector2D.y >= -1 && localVector2D.y <= 1
) {
raycaster.setFromCamera(localVector2D, camera);
return raycaster;
if (renderer) {
renderer.getSize(localVector2D2);
localVector2D.set(
(clientX / localVector2D2.x) * 2 - 1,
-(clientY / localVector2D2.y) * 2 + 1
);
if (
localVector2D.x >= -1 && localVector2D.x <= 1 &&
localVector2D.y >= -1 && localVector2D.y <= 1
) {
raycaster.setFromCamera(localVector2D, camera);
return raycaster;
} else {
return null;
}
} else {
return null;
}
Expand Down Expand Up @@ -804,7 +808,9 @@ ioManager.mousedown = e => {
} else {
if ((changedButtons & 1) && (e.buttons & 1)) { // left
const raycaster = _getMouseRaycaster(e, localRaycaster);
transformControls.handleMouseDown(raycaster);
if (raycaster) {
transformControls.handleMouseDown(raycaster);
}
}
if ((changedButtons & 1) && (e.buttons & 2)) { // right
game.menuDragdownRight();
Expand Down
40 changes: 40 additions & 0 deletions pic-main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import {bindCanvas} from './renderer.js';
import {genPic} from './pic.js';

const defaultUrl = `/avatars/scillia_drophunter_v15_vian.vrm`;
const rendererSize = 2048;
const width = 500;
const height = 500;

const formEl = document.getElementById('form');
const urlEl = document.getElementById('url');
const canvasEl = document.getElementById('canvas');
const videoEl = document.getElementById('video');
formEl.addEventListener('submit', async e => {
e.preventDefault();

const url = urlEl.value;

const _bindRendererCanvas = () => {
const canvas = document.createElement('canvas');
canvas.width = rendererSize;
canvas.height = rendererSize;
bindCanvas(canvas);
};
_bindRendererCanvas();

const _initLocalCanvas = () => {
canvasEl.width = width;
canvasEl.height = height;
};
_initLocalCanvas();

await genPic({
url,
width,
height,
canvas: canvasEl,
video: videoEl,
});
});
urlEl.value = defaultUrl;
20 changes: 20 additions & 0 deletions pic.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<html>
<head>
<title>Pic | Webaverse</title>
<!-- <link rel=stylesheet type='text/css' href="screenshot.css"> -->
</head>
<body>
<form id="form">
<input type=text id="url">
<input type="submit">
</form>
<div className="outputs" id="outputs">
<canvas id="canvas"></canvas>
<video id="video"></video>
</div>

<script type=module src="pic-main.js"></script>
<!-- <div id=iframe-container></div> -->
</body>

</html>
Loading