Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Python
Перезагрузить страницу Рисование в Blender с помощью OPENGL
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Bill204 Bill204 вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.12.2010
Exclamation Рисование в Blender с помощью OPENGL - 12.12.2010, 17:50

Здравствуйте!
Есть конус. Надо написать прогу на питоне: движется источник света на конус и отбрасывается тень на плоскость y=0.
Вобщем-то я знаю как что сделать.
Проблема в том, что моя тень не рисуется.
Что надо исправить?
Рисование тени- функция shadowL:

import time
import Blender as B
import math
import Blender.Mathutils
from Blender import Draw, BGL
from Blender.BGL import *
ob=B.Object.Get('Cone'
msh=ob.getData(False,True)
fs=msh.faces
cntEnd=200
cnt=0

buffP=Buffer(GL_FLOAT,4,[0.,0.,20,1.]) #initial position of LIGHT0 (proj coords)
lbuf=Buffer(GL_FLOAT,4,[5.,0,5.,1.]) #initial position of LIGHT0 (proj coords)


def cngL():
global cnt
time.sleep(0.1)
if cnt==cntEnd: Draw.Exit()
cnt +=1;
lbuf[0] +=1 # changes coords after each step
lbuf[2] +=2
Draw.Redraw(1)

def createMatr(): # creates shadow matrix that transforms the original triangles into its shadow
glLightfv(GL_LIGHT0,GL_POSITION,buffP)

glEnable(GL_LIGHT0)
mmat=Buffer(GL_FLOAT,16,[buffP[2],0, 0,0 , 0,buffP[2],0,0, -buffP[0],-buffP[1],0, -1, 0,0,0, buffP[2]])
glMultMatrixf(mmat)


def triang():
pcnt=0
for ff in fs:
v=ff.no
glNormal3f(v.x,v.y,v.z)
if len(ff.verts)==3:
glBegin(GL_TRIANGLES)
for pt in ff.verts:
glVertex3f(pt.co.x+0.5,pt.co.y,pt.co.z)
glEnd()
pcnt +=1

def triang2():
pcnt=0
for ff in fs:
v=ff.no
glNormal3f(v.x,v.y,v.z)
if len(ff.verts)==3:
glBegin(GL_TRIANGLES)
for pt in ff.verts:
glVertex3f(pt.co.x-0.5,pt.co.y,pt.co.z+2)
glEnd()
pcnt +=1

def shadowL():
glBegin(GL_TRIANGLES)
glVertex3f(lbuf[0]-1,lbuf[1],lbuf[2]-1)
glVertex3f(lbuf[0],lbuf[1],lbuf[2]-1)
glVertex3f(lbuf[0],lbuf[1],lbuf[2])
glEnd()


def plane():
glBegin(GL_QUADS)
glVertex3f(20,0,10)
glVertex3f(40,0,10)
glVertex3f(40,0,20)
glVertex3f(20,0,20) # plane where we see shadow
glEnd()

def key(evt,val):
if evt==Draw.ESCKEY: Draw.Exit()
def gui():
glClearColor(0,1,0,1)
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
glEnable(GL_DEPTH_TEST)
glEnable(GL_LIGHTING)


glViewport(0,200,500,300)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glOrtho(-2,2,-2,2,-100,500)

glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
glTranslatef(0,0,-8)
# glRotatef(ang,1,1,1)
triang()
triang2()

shadowL()

# glClearColor(0,1,0,1)
# glColor3f(1,1,1)
# plane()
cngL()

Draw.Register(gui,key,None)
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование Bars777 .NET 1 22.09.2011 02:08
Рисование мышей в Opengl Dark19 Программирование графики 2 13.05.2011 19:32
Используя python and blender промодулировать столкновение двух и более шаров watermad Python 0 30.03.2011 17:03
Рисование в GraphABC Наташок Pascal 0 03.01.2011 15:58
Python и OpenGL в Blender движение шаров mi.grechanik Python 0 06.12.2010 18:32
Рисование с помощью функции DLL BabyBear Visual C++ 6 09.01.2009 00:59
Рисование в VB senon_evero Visual Basic 2 08.03.2007 13:47
Рисование на UserForm - как??????? 8( sten Visual Basic 1 02.06.2006 11:49
Написание программы с помощью OpenGL GlebG Вопросы начинающих программистов 5 19.04.2006 16:36
Рисование в формах С# MuraVei .NET 3 04.01.2006 12:27
Рисование в текстуру Fester Программирование графики 5 20.03.2005 19:58
Как с помощью Delphi запоковать файл с помощью zip Anonymous Delphi 2 28.10.2002 16:11



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов