運営の作例 / JANCTION example: 平行投影カメラのアイソメのオフィス / Isometric office corner with an orthographic camera

運営の作例 / JANCTION example: 平行投影カメラのアイソメのオフィス / Isometric office corner with an orthographic camera

エージェントに頼んだこと

Render https://render.janction.jp/samples/ex25_isometric_office.py as a 1200x1200 still, 128 samples, overcast preset.

Reproducible JANCTION operator example. Source script and measured render settings are included; edit the script and render it again with your own key.

描いた経路: benchmark run → JANCTION Render

解像度1200 x 1200
コマ1
サンプル128
エンジンCycles / Blender 5.0
環境光overcast
GPU 時間3.67 s (GPU/CUDA)

この設定で自分のモデルを試す

ブラウザだけで、登録は要りません。最初の試し描きに支払いは要りません。

同じスクリプトを自分の鍵で描く

ブラウザだけで、登録は要りません。最初の試し描きに支払いは要りません。

シーンのスクリプト(bpy)

"""JANCTION Render example 25: an isometric office corner with an orthographic camera (one still).

Reproduce: render_final(scene_url="https://render.janction.jp/samples/ex25_isometric_office.py",
                        width=1200, height=1200, samples=128, environment="overcast")
Two walls, a floor, a desk with a monitor, a chair, a shelf, plants and a bright window, all from cubes and
cylinders. The camera is orthographic at the classic isometric angles (54.7 and 45 degrees).
"""
import math

import bpy
from mathutils import Vector

for ob in list(bpy.data.objects):
    bpy.data.objects.remove(ob, do_unlink=True)
scene = bpy.context.scene
scene.frame_start = 1
scene.frame_end = 1


def material(name, color, roughness=0.6, emission=0.0):
    mat = bpy.data.materials.new(name)
    bsdf = mat.node_tree.nodes["Principled BSDF"]
    bsdf.inputs["Base Color"].default_value = (*color, 1.0)
    bsdf.inputs["Roughness"].default_value = roughness
    if emission:
        bsdf.inputs["Emission Color"].default_value = (*color, 1.0)
        bsdf.inputs["Emission Strength"].default_value = emission
    return mat


def box(name, size, location, mat, rotation=0.0):
    bpy.ops.mesh.primitive_cube_add(size=1, location=location)
    ob = bpy.context.active_object
    ob.name = name
    ob.scale = size
    ob.rotation_euler = (0, 0, rotation)
    ob.data.materials.append(mat)
    bev = ob.modifiers.new("Bevel", "BEVEL")
    bev.width = 0.02
    bev.segments = 2
    return ob


def cyl(name, radius, depth, location, mat, vertices=32):
    bpy.ops.mesh.primitive_cylinder_add(vertices=vertices, radius=radius, depth=depth, location=location)
    ob = bpy.context.active_object
    ob.name = name
    ob.data.materials.append(mat)
    return ob


wall = material("Wall", (0.86, 0.84, 0.8))
floor = material("Floor", (0.55, 0.4, 0.28), roughness=0.45)
wood = material("Desk", (0.72, 0.56, 0.4), roughness=0.4)
dark = material("Dark", (0.06, 0.06, 0.07), roughness=0.3)
screen = material("Screen", (0.35, 0.65, 1.0), emission=2.5)
fabric = material("Fabric", (0.2, 0.35, 0.55), roughness=0.8)
leaf = material("Leaf", (0.18, 0.45, 0.2), roughness=0.7)
pot = material("Pot", (0.75, 0.42, 0.3), roughness=0.5)
glow = material("Window", (1.0, 0.95, 0.85), emission=4.0)

box("Floor", (4, 4, 0.1), (0, 0, -0.05), floor)
box("WallBack", (4, 0.1, 2.6), (0, 2.05, 1.3), wall)
box("WallLeft", (0.1, 4, 2.6), (-2.05, 0, 1.3), wall)
box("Window", (0.02, 1.4, 1.0), (-1.99, 0.4, 1.55), glow)

box("DeskTop", (1.6, 0.75, 0.05), (0.2, 1.4, 0.75), wood)
for dx in (-0.72, 0.72):
    box("DeskLeg", (0.05, 0.65, 0.72), (0.2 + dx, 1.4, 0.37), dark)
box("Monitor", (0.75, 0.04, 0.45), (0.2, 1.62, 1.12), dark)
box("MonitorScreen", (0.7, 0.01, 0.4), (0.2, 1.595, 1.12), screen)
box("Stand", (0.06, 0.06, 0.2), (0.2, 1.65, 0.86), dark)
box("Keyboard", (0.45, 0.15, 0.02), (0.2, 1.25, 0.785), dark)

box("Seat", (0.5, 0.5, 0.08), (0.2, 0.75, 0.48), fabric)
box("Back", (0.5, 0.07, 0.55), (0.2, 0.5, 0.8), fabric)
cyl("ChairPost", 0.04, 0.42, (0.2, 0.75, 0.22), dark)
cyl("ChairBase", 0.28, 0.04, (0.2, 0.75, 0.02), dark)

box("Shelf", (0.35, 1.4, 1.6), (-1.8, -0.9, 0.8), wood)
for i, z in enumerate((0.35, 0.8, 1.25)):
    for j in range(4):
        box(f"Book{i}{j}", (0.22, 0.06, 0.28), (-1.7, -1.4 + j * 0.12 + i * 0.05, z + 0.14), material(f"Book{i}{j}", (0.3 + 0.15 * j, 0.25 + 0.1 * i, 0.5 - 0.1 * j)))

for k, (x, y, s) in enumerate(((1.6, 1.6, 1.0), (1.5, -1.3, 0.8))):
    cyl(f"Pot{k}", 0.18 * s, 0.35 * s, (x, y, 0.175 * s), pot)
    bpy.ops.mesh.primitive_ico_sphere_add(subdivisions=2, radius=0.32 * s, location=(x, y, 0.62 * s))
    bush = bpy.context.active_object
    bush.data.materials.append(leaf)

bpy.ops.object.light_add(type="AREA", location=(-1.0, 0.4, 1.6))
win = bpy.context.active_object
win.data.energy = 120
win.data.size = 1.2
win.rotation_euler = (0, math.radians(-90), 0)

# アイソメ: 部屋の中心から (1, -1, 1) の向きに離し、平行投影の幅を部屋の大きさに合わせる
center = Vector((0.0, 0.0, 1.0))
bpy.ops.object.camera_add(location=center + Vector((1.0, -1.0, 1.0)) * 12)
cam = bpy.context.active_object
cam.data.type = "ORTHO"
cam.data.ortho_scale = 7.6
cam.rotation_euler = (center - cam.location).to_track_quat("-Z", "Y").to_euler()
scene.camera = cam

自分の AI で同じものを作る

ChatGPT · Claude · Grok · Perplexity

JANCTION Render(MCP サーバー https://render.janction.jp/mcp)で、これと同じような絵を作って: https://render.janction.jp/ja/r/dkwissh3rq 。何を変えたいか(自分のモデルやシーン、色、カメラ)を先に聞いて、まず試し描きし、仕上げの前に確認して。

リンクを押すと、下の文が入った状態でそのアプリが開きます(入らないときは写して貼ってください)。そのアプリに JANCTION Render をまだつないでいなければ、先にコネクタとして https://render.janction.jp/mcp を足してください。

広める

X に投稿 Bluesky に投稿

埋め込み(HTML)

この絵は JANCTION Render(AI エージェント向けの Blender レンダーファーム。新しい鍵は無料で始められる)で描かれました。自分の Blender ファイルや bpy スクリプトを描くには つなぎ方へ。AI アプリ(Claude.ai・ChatGPT・Cursor など)には MCP の URL https://render.janction.jp/mcp?src=share を足すだけです。問題のある内容は サポートへ。

この結果はどうでしたか

描き上がった結果は、頼んだとおりでしたか?

 

IP は保存しません。名前とリンクは任意で、載せるときだけ使います。

ここに載っている作品の作者には、公開のお礼としてジャスミーラボから GPU クレジットを渡していることがあります。額は内容で変わらず、投稿に手は入れません。

ギャラリー · English

JANCTION Render v0.4.209 · JasmyLab Inc. · 更新 2026-10-26 · 検証 Blender 3.6 / 4.2 / 4.5 / 5.0 / 5.2, JANCTION Render 0.4.209 · English