Geben Sie das Beleuchtungsmodell für SCN-Material in Pythonista an

C4826DB1-F6F1-482A-9F18-57A5E837144A.jpeg

Schnelle Strukturen und Konstanten in Pythonista? Ich dachte, ich könnte das Beleuchtungsmodell von SCNMaterial nicht ändern, wodurch sich die Textur des Modells erheblich ändern kann, da ich nicht gut darauf zugreifen kann, aber ich habe einen Weg gefunden, dies zu tun.

setLightingModelName_(string name)

lightingModel ist eine Eigenschaft von SCNMaterial. Um dies zu ändern, verwenden Sie die Funktion setLightingModelName_.

Das Argument ist eine Zeichenfolge, und die folgenden Zeichenfolgen können angegeben werden.

class SCNLightingModel:
	blinn = 'SCNLightingModelBlinn'
	constant = 'SCNLightingModelConstant'
	lambert = 'SCNLightingModelLambert'
	phong = 'SCNLightingModelPhong'
	physicallyBased = 'SCNLightingModelPhysicallyBased'
	shadowOnly = 'SCNLightingModelShadowOnly'

Beispielquelle

scenekit03.py


import objc_util
from objc_util import *
import ui

load_framework('SceneKit')

SCNView,SCNNode,SCNScene,SCNCamera,SCNLight,SCNBox,SCNMaterial = map(ObjCClass, ['SCNView','SCNNode','SCNScene','SCNCamera','SCNLight','SCNBox','SCNMaterial'])

class SCNLightingModel:
	blinn = 'SCNLightingModelBlinn'
	constant = 'SCNLightingModelConstant'
	lambert = 'SCNLightingModelLambert'
	phong = 'SCNLightingModelPhong'
	physicallyBased = 'SCNLightingModelPhysicallyBased'
	shadowOnly = 'SCNLightingModelShadowOnly'
	

def main():
	main_view = ui.View()
	main_view_objc = ObjCInstance(main_view)
	
	# View
	scene_view = SCNView.alloc().initWithFrame_options_(((0, 0),(400, 400)), None).autorelease()
	# UIView.autoresizingMask = flexibleWidth(2) | flexibleHeight(16)
	scene_view.setAutoresizingMask_(18)
	scene_view.setAllowsCameraControl_(True)
	
	scene = SCNScene.scene()
	node_root = scene.rootNode()
	
	# material
	material = SCNMaterial.material()
	material.setLightingModelName_(SCNLightingModel.physicallyBased) 
	material.diffuse().setColor_(UIColor.redColor().CGColor())
	
	# box geometry
	geom_box = SCNBox.boxWithWidth_height_length_chamferRadius_(1.0,1.0,1.0,0.2)	
	geom_box.setMaterials_([material])
	node_box = SCNNode.nodeWithGeometry_(geom_box)
	node_box.setPosition((-0.5,0.5,-0.5))
	node_root.addChildNode_(node_box)
	
	# camera
	camera = SCNCamera.camera()
	node_camera = SCNNode.node()
	node_camera.setCamera(camera)
	node_camera.setPosition((0,0,5.0))
	node_root.addChildNode_(node_camera)
	
	# Light
	light = SCNLight.light()
	light.setType_('omni')
	light.setColor_(UIColor.whiteColor().CGColor())
	node_light = SCNNode.node()
	node_light.setPosition((2.0,2.0,2.0))
	node_light.setLight_(light)
	node_root.addChildNode_(node_light)
	
	scene_view.setScene_(scene)
	
	main_view_objc.addSubview_(scene_view)
	
	main_view.name = 'scene kit'
	main_view.present()
	
main()

Geheimnis

Die Beziehung zwischen SCNMaterials Struktur LightingModel und SCNLightingModel ist ein Rätsel.

Referenz

Recommended Posts

Geben Sie das Beleuchtungsmodell für SCN-Material in Pythonista an
Zählen Sie die Anzahl der Parameter im Deep-Learning-Modell
[Golang] Geben Sie ein Array für den Wert der Karte an
Zeigen Sie den Fahrplan des Morioka-Busortungssystems in Pythonista an
Geben Sie die Codierung der Unicode-Zeichenfolge in der Python 2.x-Druckanweisung an
Die Geschichte der Teilnahme an AtCoder
Python-Simulation des Epidemiemodells (Kermack-McKendrick-Modell)
Versuchen Sie, die kumulierte Rendite des Rollovers im Futures-Handel zu modellieren
Die Geschichte des "Lochs" in der Akte
Ich habe versucht, berührungsbezogene Methoden im Szenenmodul von Pythonista zu berühren
[Verständnis in 3 Minuten] Der Beginn von Linux
Geben Sie die Farbe in der matplotlib 2D-Karte an
Überprüfen Sie das Verhalten des Zerstörers in Python
Die Geschichte eines Fehlers in PyOCR
Implementieren Sie einen Teil des Prozesses in C ++
Die Bedeutung von Lint, wie Pythonista denkt
Summe der Variablen in einem mathematischen Modell
Das Ergebnis der Installation von Python auf Anaconda
Grundlagen zum Ausführen von NoxPlayer in Python
Auf der Suche nach dem schnellsten FizzBuzz in Python
Vorteile der Verwendung von Slugfield im Django-Modell
[IOS] Ändern Sie die Anzeigezeit für jedes Bild der GIF-Animation in Pythonista3.
Verarbeitung (Python) Diagramm der Koordinaten der Liste Geben Sie an, wie oft in draw ()
Python scikit-learn Eine Sammlung von Tipps für Vorhersagemodelle, die häufig im Feld verwendet werden
Implementieren Sie mit OpenModelica das mathematische Modell "SIR-Modell" von Infektionskrankheiten (siehe Wirkung des Impfstoffs)
Visualisierung des Zündzustands der verborgenen Schicht des Modells, die im TensorFlow MNIST-Lernprogramm gelernt wurde
Python scikit-learn Eine Sammlung von Tipps für Vorhersagemodelle, die häufig im Feld verwendet werden
Geben Sie die Anzahl der CPU-Kerne in Python aus
Bedeutung von {Versionsnummer} im MySQL-RPM-Paket
Verknüpfen Sie das Element list_display in Djangos Model Admin
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Ändern Sie die Schriftgröße der Legende in df.plot
Holen Sie sich den Aufrufer einer Funktion in Python
Passen Sie die Verteilung jeder Gruppe in Python an
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Kopieren Sie die Liste in Python
Finden Sie die Anzahl der Tage in einem Monat
Lesen Sie die Ausgabe von subprocess.Popen in Echtzeit
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Die Geschichte, das optimale n in N Faust zu finden
Korrigieren Sie die Argumente der in map verwendeten Funktion
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
[Python numpy] Geben Sie den Index des Arrays dynamisch an
Die Geschichte des Lesens von HSPICE-Daten in Python
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Lösen von Bewegungsgleichungen in Python (odeint)
Visualisierte den Nutzungsstatus der Spüle im Unternehmen
Ausgabe in Form eines Python-Arrays
Geben Sie die Ansichts-URL in der Django-Vorlage an
Die Geschichte der Anzeige von Mediendateien in Django
Machen Sie einen beliebigen Schlüssel zum Primärschlüssel im Django-Modell
Suchen Sie nach dem Wert der Instanz in der Liste
Machen Sie den Fortschritt von dd in der Fortschrittsanzeige sichtbar
GUI-Simulation des neuen Koronavirus (SEIR-Modell)
[SIR-Modellanalyse] Spitzenwert der Infektionszahlen in Japan und auf der ganzen Welt ♬