Crystal Renderer -Creating meshes-

Crystal Renderer -Creating meshes-

Crystal Renderer is equipped with blueprints to create jewel meshes.

It can be used as it is, and extracting mesh as StaticMesh is also possible.

f:id:nkdtr:20210131165554p:plain

Getting StaticMesh

Round Brilliant Cut

Place "BP_ProcCrystal_RoundBrilliant" on your level and configure parameters.

Wireframe view is good for examine the shape.

f:id:nkdtr:20210131161359p:plain

BP_ProcCrystal_RoundBrilliant

youtu.be

Step Cut

Place "BP_ProcCrystal_Step" on your level.

Create "CurveFloat" asset and fill the property "Curve" with it.

f:id:nkdtr:20210131161549p:plain

BP_ProcCrystal_Step

f:id:nkdtr:20210131161920p:plain

Creating Curve asset

f:id:nkdtr:20210131162228p:plain

Editing curve

youtu.be

Keys between time 0 and time 1 are used to form the mesh.

Interpolation mode should be "linear" through the curve to preview the shape well.

In the curve,

-Time 0 corresponds the top

-Time 1 corresponds the bottom

-Value 0 corresponds the center

-Values are normalized so that the largest value corresponds the "Radius"

 

Crystal Renderer Manual

Crystal Renderer Manual 

 

Store URL :

https://www.unrealengine.com/marketplace/ja/product/crystal-renderer

 

Support :

mail : nkdtr2011@gmail.com

 

What's new :

Ver1.1 (2021/1/31)

-Blueprints to create meshes implemented (manual here).

 

Ver1.02 (2021/1/15)

-Fixed compile error in building package.

 

Ver1.01 (2021/1/14)

-Fixed shader compile error in ray-tracing mode.

 

Ver1.00 (2021/1/13)

-Released

 

What is this? :

Crystal Renderer is an UnrealEngine asset to set up crystal-like material for convex shapes.

youtu.be

youtu.be

 

youtu.be

youtu.be

 

 

 Quickstart :

-Place BP_Crystal on your level

-Press "Manual Capture"

-Modify options below "Crystal" to change its look

youtu.be

Options :

-Material color (with density)

-Refractive index

-Number of bounces (how many times ray can be reflected in the object)

-Color aberration (just a fake but effective)

 

 

Requirements / Limitations :

-Number of faces(not triangles. For example, a cube has 6 faces) limited to 256

-Number of optical bounces limited to 20

-Non-convex shapes are not shown correctly (this does not always mean bad)

-"Allow CPUAccess" should be checked in static meshes
  (in editor mode, this is done automatically)

 

 

Jewel Renderer マニュアル -リファレンス-

Jewel Renderer マニュアル -リファレンス-

 

プロパティ

Color

材質内部の色です。

光が内部を通過した距離に応じて元の色に乗算されます。

Alphaは色の「濃さ」を表します。
Alpha=0のとき、無色透明となります。

 

MaxReflectionCount

内部で光を反射させる最大回数です。

1~20が有効な値です。

GPU負荷に影響があります。

 

Environment

反射光 / 透過光の色をサンプルするためのCubeMapです。

外環境となるべく近似するものが好ましいです。

 

Refractive Index

物質の屈折率です。

光が物体に出入りする際にどの程度方向を変えるかを表します。

空気:1.0

水:1.3

ダイヤモンド:2.4

くらいの値です。

 

Base Reflection

垂直な入射光が反射される割合です。

 

Prism

チェック時、光がR/G/Bで構成されると仮定しそれぞれ異なる屈折率で軌跡のシミュレーションを行います。

GPUへの負荷が3倍近い値になります。

 

MergeSimilarPlanes (ver 1.01~)

チェック時(デフォルト)、同一平面上のトライアングル(クアッド)をまとめて処理することで高速化を行います。

 

AutoCaptureEnvironment (ver1.02~)

チェック時(デフォルトではOff)、Update毎にキャプチャーを行います。

これは負荷の高い処理です(負荷はキャプチャー解像度に依存します)。

キャプチャーの解像度はCaptureEnvironmentSizeによります。

 

CaptureEnvironmentOnSetup (ver1.02~)

チェック時(デフォルトではOff)、Setupの際にキャプチャーを行います。

このとき、Cubemapを準備する必要がありません。

キャプチャーの解像度はCaptureEnvironmentSizeによります。

 

CaptureEnvironmentSize (ver1.02~)

キャプチャーの解像度を指定します。

2のべき乗(256, 512, 1024など)が好ましいとされています。

解像度が低いほど高速にキャプチャーできます。

 

Functions

Setup()

それぞれのプロパティをマテリアルに反映させます。

この機能はコンテキストメニューで使用できます : 

歯車ボタン->"Setup"

 

ApplyNumericParameters()

数値系のプロパティのみをマテリアルに反映させます。

Setup()に比べて低負荷です。

Mesh (MeshFilterコンポーネントの設定) や prism プロパティを変更した場合、

Setup()を使う必要があります。

この機能はコンテキストメニューで使用できます : 

歯車ボタン->"Setup"

 

Jewel Renderer マニュアル

Jewel Renderer マニュアル

 

ストア URL :

https://www.assetstore.unity3d.com/#!/content/110586

 

サポート:

mail : nkdtr2011@gmail.com

 

What's New

2018/3/6

Ver 1.02 released

- Cubemapをキャプチャーでまかなうオプションを追加しました。

 

2018/3/1

Ver1.01 released

- 最適化オプション(MergeSimilarPlanes)導入、デフォルトでON

 

 

概要

youtu.be

Jewel Renderer は凸型メッシュ内部での反射をシミュレートします。

透明な物体、特に宝石類のレンダリングに適します。

  • テクスチャの準備は不要です
  • シンプルな形状のメッシュからリッチなレンダリング結果が得られます
  • Windows/Mac/iOS/Android 対応
    (Mobileでは小さく表示しないと動作が重くなりがちです)

 

クイックスタート

youtu.be

  1. "Jewel" プレハブをシーンに配置します
  2. MeshFilter にメッシュを設定します
  3. プロパティを設定します(リファレンスを参照してください)
  4. JewelRenderer コンポーネントのメニュー -> "Setup"

※注意

動画中で背景にCubemapを適用している操作についてですが、

Unity2018以降は使えないようです。

代わりに以下の手順が必要です。

・パッケージ内にあるskybox01マテリアルを複製

・複製したマテリアルのCubemapパラメータに背景となるキューブマップを設定

・そのマテリアルをシーンへDrag&Drop

後に動画を差し替える予定です。

 

 

付属のサンプルシーン

Showcase

描画のサンプルです。

youtu.be

Parameters

パラメータによりレンダリング結果がどのように変化するかをテストできます。

youtu.be

 

リファレンス

nkdtr.hatenablog.com


 

制約・限界

推奨事項:

  • 凸型のメッシュについて最大限に対応しています。
    それ以外の形状では、「正しい」レンダリング結果が得らえません。
  • トライアングル間で頂点を共有していないメッシュが必要です。
    (Cubeのように、「角ばった」「面の平らに見える」ものがそれです)
  • メッシュの原点(0,0,0)を形状の内側に含む必要があります
  • SkyboxについてはMipMapを無効にすることをお勧めします。
    これには、テクスチャのプロパティグリッドで"Generate Mip Maps"チェックを外し"Apply"ボタンを押します。

パフォーマンス:

  • GPUにそれなりの負荷がかかります。
    最大のクオリティでリアルタイム描画するにはハイスペックなPCが必要でしょう。
    負荷の高さは反射回数(設定可能)、描画されるピクセル数、メッシュのトライアングル数、"prism"オプション それぞれに大きく依存します。

 

 

Jewel Renderer Manual

Jewel Renderer Manual 

 

Store URL :

https://www.assetstore.unity3d.com/#!/content/110586

 

Support :

mail : nkdtr2011@gmail.com

 

What's New

2018/3/6

Version 1.02 released

- Added option to capture cubemap.

 

2018/3/1

Version 1.01 released

- Added optimization option "MergeSimilarPlanes"

 

What is this?

youtu.be

Jewel Renderer simulates reflection of ray inside convex bodies.

Good for rendering transparent objects, especially gems.

  • No texture required
  • Rich-looking rendering result using simple mesh
  • Runs on Windows/Mac/iOS/Android
    (although it is heavy for mobiles to render widely)

 

Quick start

youtu.be

  1. Put "Jewel" prefab onto your scene
  2. Set your mesh in MeshFilter component
  3. Modify properties (see reference page for details)
  4. Component menu -> "Setup"

Caution : 

Setting background cubemap by Drag&Drop (as done in the movie) seems to be invalid in Unity2018 and later.

Following operation is available instead.

- duplicate "skybox01" material in the package

- set "Cubemap" parameter of the material

- Drag&Drop it into your scene

The movie will be replaced.

 

Sample scenes

Showcase

Sample jewels.

youtu.be

Parameters

Shows how the rendering result changes by parameters.

youtu.be

 

Reference

nkdtr.hatenablog.com

 

Limitations

Recommended:

  • Only convex shapes are fully supported.
    Although you can input non-convex one, the result will be incorrect.
  • Vertices should not be shared by multiple triangles.
    ("Edged," "flat-surfaced" model)
  • Origin (0,0,0) of mesh should be inside the shape.
  • Skyboxes should not include Mip-maps.
    Uncheck "Generate Mip Maps" in the texture's property grid and "Apply".

Performance:

  • Requires considerable GPU cycles, depending on reflection count (configurable) and number of rendered pixels, number of triangles in the mesh and "prism" option.
    To render in best quality, high-spec PC will be required.

 

 

Jewel Renderer Manual - Reference -

Jewel Renderer Manual - Reference -

 

Properties

Color

Internal color of the material.

This color is multiplied to the light color, with power incluenced by the distance it has proceeded through in the jewel.

Alpha element corresponds to the density.

Alpha=0 means it is clear and colorless.

 

MaxReflectionCount

Maximum number that light can reflect in the jewel.

Valid number for this property is 1 to 20.

 

Environment

Cubemap texture to sample reflection/refraction color from.

 

Refractive Index

Refractive index of the jewel body.

 

Base Reflection

Reflection rate for vertically incoming light.

 

Prism

If checked, light is separated into R, G and B with different refraction indices.

Costs almost x3 GPU cycles.

 

MergeSimilarPlanes (ver 1.01~)

If checked, triangles on the same plane are processed at once (faster).

 

AutoCaptureEnvironment (ver1.02~)

If checked, environment cubemap is captured every frame.

This is high-cost process depending on capture resolution.

Capture resolution is set by property "CaptureEnvironmentSize."

 

 

CaptureEnvironmentOnSetup (ver1.02~)

If checked, environemnt cubemap is captured on "Setup."

By this, you don't need to prepare Cubemap as an asset.

Capture resolution is set by property "CaptureEnvironmentSize."

 

CaptureEnvironmentSize (ver1.02~)

Resolution of captured environment.

Power of 2 is said to be good.

Lower resolution makes capturing quicker.

 

Functions

Setup()

Setup material reflecting each properties.

This function is exposed to the context menu : 

click component's gear button->"Setup" to invoke.

 

ApplyNumericParameters()

Apply numeric parameters on the material.

If mesh (in MeshFilter component) or prism property,

you should use "Setup()" instead.

This function is exposed to the context menu : 

click component's gear button->"ApplyNumericParameters" to invoke.